2012-10-13 7 views
7

nginxがファイルのローカルホストを最初に検索し、404エラーでサーバ1.1.1.1を検索する必要があります。Nginx proxy_next_upstreamが機能しない

ローカルホスト上にあるファイルを取得できますが、サーバ1.1.1.1から取得できません。

server { 
    listen 80; 
    server_name localhost; 

    access_log /var/log/nginx/access.log main; 

    location /products/ { 
     proxy_next_upstream http_404; 

     root /var/foo; 
    } 
} 

server { 
    listen 80; 
    server_name 1.1.1.1; 
    location /products/ { 
     ######### 
    } 
} 

私はproxy_next_upstreamがサーバーに切り替わっていないと思います。

これについての助けに感謝します。

答えて

27

proxy_next_upstreamディレクティブは、upstream serversのグループからの再要求を制御するためのコンフィグレーションディレクティブで、proxy_passのいずれかに要求が失敗すると、proxy_passになります。 proxy_passupstreamブロックが定義されていないと意味をなさない。 - 別のサーバーへのプロキシ要求を、例えばそれを設定

upstream backends { 
    server 192.2.0.1; 
    server 192.2.0.2; 
    ... 
} 

server { 
    ... 

    location/{ 
     proxy_pass http://backends; 
     proxy_next_upstream error timeout http_404; 
    } 
} 

あなたはそれが見つからない場合は、ディスク上のファイルを検索するnginxの、としたい場合:あなたはこのように複数のアップストリームサーバーへのプロキシ場合は、それを使用することができます代わりにtry_filesフォールバックを使用して:

location/{ 
    root /path/to/root; 
    try_files $uri @fallback; 
} 

location @fallback { 
    proxy_pass http://... 
} 

try_filesディレクティブについての詳細はhttp://nginx.org/r/try_filesを参照してください。

+0

ありがとうございました。マキシムDounin ..ありがとう! – sorabh

+0

答えが – gipi

+0

の場合、http_403とhttp_404の場合は失敗したと見なされます。 – Daniel

関連する問題