13

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

ローカルホストにあるファイルをフェッチできますが、サーバー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はサーバーに切り替えていないと思います。

これに関する助けをいただければ幸いです。

4

1 に答える 1

41

proxy_next_upstreamディレクティブは、アップストリームサーバーのグループからの再要求を、それらの1つへのif要求が失敗した場合に制御するための構成ディレクティブ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://...
}

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

于 2012-10-14T00:36:01.523 に答える