Nginx konumlarını ortak yapılandırma seçeneklerini paylaşacak şekilde nasıl yapılandırabilirim?


37

Bir konum kümesi için paylaşılan bir yapılandırma bloğunu nasıl yapılandırabilirim?

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

Şimdi /api/0.1/user'e erişmeye çalışırsam, 404 alacağım çünkü isteği 127.0.0.1:9000'e geçmiyor.

Yanıtlar:


53

Ortak bir proxy yapılandırması oluşturun ve gerektiği gibi ekleyin.

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

Ana Bilgisayar Yapılandırma Dosyanız

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

1
1, ama sadece bir not: Size dışarı dönüşler yapılandırmanın sürü bütün yer de dahil olmak üzere bu şekilde içerebilir nginx.org/en/docs/ngx_core_module.html#include
equivalent8


11

Proxy_ * yapılandırma değişkenlerinin çoğuna sunucu bağlamında da izin verilir, böylece aynı ayarları çeşitli konumlarda paylaşmak için bunları yukarı taşıyabilirsiniz.

Ancak, proxy_pass yalnızca konum içinde kullanılmalıdır. Bu nedenle, isteğe bağlı olarak bazı ekstra proxy_ * vars değerlerini geçersiz kılan her yerde en azından bu yönergeye sahip olmalısınız.


Konuma özel proxy_set_headeryönergeleriniz varsa bu işe yaramaz çünkü "Bu yönergeler, yalnızca mevcut seviyede tanımlanmış proxy_set_header yönergeleri yoksa önceki seviyeden devralınır." nginx.org/en/docs/http/…
Emerson Farrugia
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.