Usando o nginx na frente do IIS 8.5.
O IIS 8.5 tem compressão configurada e funcionando muito bem.
Mas quando chegamos ao nginx (config abaixo), o gzip é perdido (da perspectiva do navegador da web).
Parte 1: A tentativa nº 1 da solução era ativar o gzip no nginx, o que trouxe de volta o gzip da perspectiva do navegador, mas agora (tememos) ou (a) sobrecarregou o gzip duplo (gzip) no iis, descompacte no nginx, gzip novamente no nginx); ou, (b) o gzip está agora no nginx, o que não é ideal (porque temos um controle melhor sobre o iis, e podemos tomar melhores decisões sobre o que é estático e o que é dinâmico e, portanto, melhor cache, etc.). A configuração da solução # 1 pode ser vista aqui: nginx: o gzip no servidor é perdido durante o proxy
Addendum 1: Per nginx docs
(https://www.nginx.com/resources/admin-guide/compression-and-decompression/):
" NGINX ... does not “double compress” responses that are already
compressed"
This is good, in that double-zipping will not occur.
Parte 2: Então, o que realmente queremos é que o cabeçalho de codificação aceita passe por , do navegador até o nginx até o iis, vamos fazer toda a compactação, e passar as respostas gzipadas através do nginx sem nenhuma sobrecarga gzip acontecendo no nginx. Nossa configuração atual está abaixo.
A pergunta: Como alcançamos a parte 2 no nginx 1.7.9?
Execução da configuração do proxy reverso, que remove todo o gzip (por exemplo, parece retirar o cabeçalho da codificação de aceitação):
http {
upstream sandbox_site {
least_conn;
# we pipe to back end on port 80 only, so that nginx handles all ssl
server 192.168.2.16:80 max_fails=1 fail_timeout=60s; # sbox3-site is .2.16
}
server {
# This is sandbox.myapp.com block **************************************
listen 192.168.2.27:80;
server_name sandbox.myapp.com;
location / {
proxy_pass http://sandbox_site;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
# This is SSL version of sandbox.myapp.com block **************************************
listen 192.168.2.27:443 ssl;
server_name sandbox.myapp.com;
ssl_certificate new-sandbox-myapp-com.cer;
ssl_certificate_key new-sandbox-myapp-com.key;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://sandbox_site;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}