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