Opened 10 years ago
Closed 10 years ago
#622 closed defect (invalid)
Use upstream headers in proxy_pass and proxy_cache_key
Reported by: | Dobes Vandermeer | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | nginx-core | Version: | 1.6.x |
Keywords: | Cc: | ||
uname -a: | Linux dobes-VirtualBox 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux | ||
nginx -V: |
nginx version: nginx/1.6.0
TLS SNI support enabled configure arguments: --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_spdy_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module --add-module=/build/buildd/nginx-1.6.0/debian/modules/nginx-auth-pam --add-module=/build/buildd/nginx-1.6.0/debian/modules/nginx-dav-ext-module --add-module=/build/buildd/nginx-1.6.0/debian/modules/nginx-echo --add-module=/build/buildd/nginx-1.6.0/debian/modules/nginx-upstream-fair --add-module=/build/buildd/nginx-1.6.0/debian/modules/ngx_http_substitutions_filter_module |
Description
I wanted to do something like:
proxy_cache_key $upstream_x_accel_cache_key; proxy_pass $upstream_x_accel_remote_url;
So that my app server could tell nginx a URL to proxy to and a cache key to use for that response.
However, it seems like this doesn't work - the variables always turn up blank even though they can be used in other places.
Variables defined using the map
directive also seem to be ignored by proxy_pass
and proxy_cache_key
.
Change History (2)
comment:1 by , 10 years ago
comment:2 by , 10 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
The $upstream_* variables are cleared once the upstream module starts working again. If you want to use headers returned by an upstream response in another upstream request, you have to save the values using set
, e.g.:
set $backend $upstream_x_backend; proxy_pass http://$backend;
Note:
See TracTickets
for help on using tickets.
As a workaround, I have managed to embed everything I need to use in the
proxy_pass
andproxy_cache_key
directives into the URL instead of using headers, and read them out using a regular expression location.