Làm cách nào tôi có thể định cấu hình vị trí nginx để chia sẻ các tùy chọn cấu hình phổ biến?


37

Làm cách nào tôi có thể định cấu hình khối cấu hình được chia sẻ cho một nhóm vị trí?

    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;
    }

Bây giờ nếu tôi cố gắng truy cập /api/0.1/user thì tôi sẽ nhận được 404 vì nó không chuyển yêu cầu tới 127.0.0.1:9000

Câu trả lời:


53

Tạo một cấu hình proxy phổ biến và bao gồm khi cần thiết.

/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;

Tập tin cấu hình máy chủ của bạn

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

1
+1, nhưng chỉ một lưu ý: hóa ra bạn có thể bao gồm toàn bộ cấu hình theo cách này bao gồm toàn bộ vị trí nginx.org/en/docs/ngx_core_module.html#include
tương


11

Hầu hết các biến cấu hình proxy_ * cũng được cho phép trong ngữ cảnh máy chủ, vì vậy bạn có thể di chuyển chúng lên để chia sẻ cùng các cài đặt trên một số vị trí.

Tuy nhiên, proxy_pass chỉ nên được sử dụng trong vị trí. Vì vậy, bạn nên có ít nhất lệnh này trong mỗi vị trí, tùy ý ghi đè các giá trị của một số vars proxy_ * bổ sung.


Điều này sẽ không hoạt động nếu bạn có các proxy_set_headerchỉ thị cụ thể theo vị trí vì "Các chỉ thị này được kế thừa từ cấp trước nếu và chỉ khi không có chỉ thị proxy_set_header được xác định ở cấp hiện tại." nginx.org/en/docs/http/ từ
Emerson Farrugia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.