sub_filter + proxy_pass requires no gzip encoding
The nginx sub
module is useful for injecting html into web requests at the nginx level. It looks like this:
location / {
sub_filter '</head>' '<script>doSomething();</script></head>';
}
Replace the end closing tag with a script tag and the head closing tag.
This does not work however with the proxy_pass
module response coming from the proxy_pass
url is gzip encoded.
In this case, you want to specify to the destination server that you will accept no encoding whatoever with the proxy_set_header
directive, like so:
proxy_set_header Accept-Encoding "";
Altogether it looks like this:
location / {
proxy_set_header Accept-Encoding "";
proxy_pass http://destination.example.com
sub_filter '</head>' '<script>doSomething();</script></head>';
}
Tweet