일반적인 구성 옵션을 공유하도록 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가 표시됩니다.

답변:


53

공통 프록시 구성을 작성하고 필요에 따라 포함하십시오.

/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,하지만 한 참고 : 판명 구성의 전체 무리에게 전체 위치를 포함하여이 방법을 포함 할 수 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/…
에머슨 파루 지아
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.