2017-02-27 9 views
0

アップストリームのサーバーからhttp_response codeを確認しようとしていて、アップストリームがダウンしているときにデフォルトの応答コードを渡します。アップストリームがプロキシをアッププロキシしている場合は、すべてのリクエストをプロキシします。Nginx If文を使用してアップストリームサーバーの状態を確認する

私のnginxの(動作しない)設定は私が達成したい何この

server { 
    listen 80; 

    server_name auth.example.com; 

    set $upstream 123.456.789.123:8080; 


location @active{ 
    proxy_pass_header Authorization; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_http_version 1.1; 
    proxy_set_header Connection ""; 
    proxy_buffering off; 
    client_max_body_size 10M; 
    proxy_read_timeout 36000s; 
    proxy_redirect off; 
    proxy_pass http://$upstream; 
} 

location @outage { 
    return 200 "yass!"; 

} 

location/{ 
    error_page 500 = @outage; 
    set $200 @active; 

    if ($http_status != 404){ 
    return 500; 
    } 
    if ($http_status = 200) { 
     return 200; 
    } 

} 

のように見える私の上流のサーバがデフォルト200応答を返すダウンしている場合は、簡単です。

私のアップストリームサーバーが利用できる場合は、すべてのリクエストをプロキシしてください。

どのように私はこれを達成することができますか(コード例はクールです:-))nginx。

答えて

0

私はどこが間違っていたのか分かりました。以下の設定が私のために働いていました。

server { 
listen 80; 

server_name auth.example.com; 

set $upstream 123.456.789.123:8080; 

location/{ 
    proxy_pass_header Authorization; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_http_version 1.1; 
    proxy_set_header Connection ""; 
    proxy_buffering off; 
    client_max_body_size 10M; 
    proxy_read_timeout 36000s; 
    proxy_redirect off; 
    proxy_pass http://$upstream; 

    error_page 500 502 503 504 = @outage; 
} 

location @outage { 
    return 200 "yas"; 

    } 
} 
+0

プロキシからのエラーを記録するには、 'proxy_intercept_errors on;'が必要です。私はあなたのケースでは、上流がダウンしていると思う*応答は 'nginx'から来る。 –

関連する問題