共通の構成オプションを共有するためにnginxの場所を構成するにはどうすればよいですか?


37

一連の場所の共有構成ブロックを構成するにはどうすればよいですか?

    location / {

            proxy_pass        http://127.0.0.1:9000/;
            proxy_redirect    off;
            proxy_set_header  Host             $http_host;
            proxy_set_header  X-Real-IP        $remote_addr;
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;

            proxy_cache cache-test;
            proxy_cache_valid 200 302 24h;
            proxy_cache_valid 404 60s;
            add_header X-Cache-Status $upstream_cache_status;

    }


    location /api/0.1/user{
            proxy_cache_key /user/$http_authorization;
    }

ここで/api/0.1/userにアクセスしようとすると、リクエストが127.0.0.1:9000に渡されないため、404になります

回答:


54

共通のプロキシ設定を作成し、必要に応じて含めます。

/etc/nginx/api_proxy.conf

proxy_pass        http://127.0.0.1:9000/;
proxy_redirect    off;
proxy_set_header  Host             $http_host;
proxy_set_header  X-Real-IP        $remote_addr;
proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;

proxy_cache cache-test;
proxy_cache_valid 200 302 24h;
proxy_cache_valid 404 60s;
add_header X-Cache-Status $upstream_cache_status;

ホスト設定ファイル

...
location /api/0.1/user {
    include /etc/nginx/api_proxy.conf;
    proxy_cache_key /user/$http_authorization;
}
...

1
1が、ちょうど1注:設定の全体の束に全体の場所を含め、このよう含めることができ判明nginx.org/en/docs/ngx_core_module.html#includeを
equivalent8


11

proxy_ *構成変数のほとんどはサーバーコンテキスト内でも許可されているため、複数の場所で同じ設定を共有するためにそれらを移動できます。

ただし、proxy_passはロケーション内でのみ使用する必要があります。そのため、少なくとも各場所にこのディレクティブを追加し、オプションで追加のproxy_ *変数の値をオーバーライドする必要があります。


proxy_set_header「現在のレベルでproxy_set_headerディレクティブが定義されていない場合にのみ、これらのディレクティブは前のレベルから継承されるため」ロケーション固有のディレクティブがある場合、これは機能しません。nginx.org/en/docs/http/...
エマーソンFarrugia
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.