Matching & Acting upon Headers received from Upstream with proxy_pass
Alec Muffett
alec.muffett at gmail.com
Thu Jan 31 21:06:10 UTC 2019
Hello All!
I'm running a reverse proxy and I want to trap when upstream is sending me:
Content-Encoding: gzip
...and on those occasions return (probably) 406 downstream to the client;
the reason for this is that I am always using:
proxy_set_header Accept-Encoding "identity";
...so the upstream should *never* send me gzip/etc; but sometimes it does
so because of errors with CDN configuration and "Vary:" headers, and that
kind of thing. I would like to make the situation more obvious and easier
to detect.
I have been trying solutions like:
if ( $upstream_http_content_encoding ~ /gzip/ ) { return 406; }
and:
map $upstream_http_content_encoding $badness {
br 1;
compress 1;
deflate 1;
gzip 1;
identity 0;
default 0;
}
...
server { ...
if ($badness) { return 406; }
...but nothing is working like I had hoped, I suspect because I do not know
if/where to place the if-statement such that the
upstream_http_content_encoding is both set and valid during an appropriate
processing phase.
The most annoying thing is that I can see that the
upstream_http_content_encoding variable is set to "gzip", because if I do:
more_set_headers "Foo: /$upstream_http_content_encoding/";
...then I can see the "Foo: /gzip/" value on the client; but that does not
help me do what I want.
Can anyone suggest a route forward, please?
-a
--
http://dropsafe.crypticide.com/aboutalecm
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20190131/ab8b4423/attachment.html>
More information about the nginx
mailing list