2017-02-02 7 views
0

上流のソリューションのようにリクエストをプロキシします。ダイナミックサブドメインのNginxで上流をシミュレートする方法

server_name ~^(?<subdomain>.+)\.example\.com$; 
root /dev/null; 

location/{ 
    error_page 502 @nextserver; 
    resolver 127.0.0.1:53 valid=300s; 
    proxy_pass "https://$subdomain"; 
} 

location @nextserver { 
    error_page 502 @error; 
    resolver 127.0.0.1:53 valid=300s; 
    proxy_pass "https://$subdomain-blahblah"; 
} 

location @error { 
    return 502 'Service is not available'; 
} 

あなたは私がhttps://$subdomainをチェックし、それが存在しないか、それがダウンし、その後https://$subdomain-blahblahをチェックしている場合だろう見ることができるように。

正常に動作しますが、2番目のサーバーがダウンしているときに問題が発生した場合、NginxはService is not availableメッセージを提供しません。

そうなシナリオでは、サーバーの名前は動的であるので、私は上流を使用することができませんでした

check Server A -> down 
    check Server B -> down 
    Return custom error 

のようなものです。

答えて

0

この問題を別の方法で解決することをお勧めします。このサンプルをチェックしてください。

http{ 

    listen 80; 
    root /path/to/static/files; 

    upstream_server subdomain1{ 
     server 192.168.1.100:8000; 
     server 192.168.1.101:8000; 
    } 

    upstream_server subdomain2{ 
     server 192.168.1.102:8000; 
     server 192.168.1.103:8000; 
    } 

    location/{ 
     server_name subdomain1.example.com; 
     proxy_pass http://subdomain1; 
     include /etc/nginx/proxy_pass; 
    } 

    location/{ 
     server_name subdomain2.example.com; 
     proxy_pass http://subdomain2; 
     include /etc/nginx/proxy_pass; 
    } 

} 
+0

私が言ったように、私はサブドメインが動的なので上流には使用できません。私は彼らが何であるか、彼らが生まれたとき、または名前が何かを知らない。 – Hamid

+0

その場合は、この質問の名前を「nginxで一般的なsuddomainを設定する方法」のように改名することをお勧めします。 – nanachimi

+0

良い提案は、行う:) – Hamid

関連する問題