How can I configure nginx locations to share common configuration options?
How can i configure a shared config block for a set of locations?
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;
}
Now if i try to access /api/0.1/user then i will get 404 because it doesn´t pass the request to 127.0.0.1:9000
Create a common proxy config and include as-needed.
/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;
Your Host Config File
...
location /api/0.1/user {
include /etc/nginx/api_proxy.conf;
proxy_cache_key /user/$http_authorization;
}
...
Most of proxy_* configuration variables are also allowed within server context, so you can move them up to share same settings over several locations.
However, proxy_pass should be only used within location. So you should have at least this directive within each location, optionally overriding values of some extra proxy_* vars.