在 nginx 中要啟用 gzip 非常簡單
gzip on;
gzip_http_version 1.0;
gzip_comp_level 9;
gzip_proxied any;
gzip_min_length 1400;
gzip_types text/css application/x-javascript text/javascript;
gzip_vary on;
但是加了之後
cache_vary on
broken_vary_encoding allow all
這是因為啟用 gzip 後Vary:Accept-Encoding
gzip_http_version 1.0
了還是一樣有問題
另外一個問題是在 nginx 裡面預設是有支援 Connection:Keep-AliveConnection:Close
http_port 80 accel vhost http11
cache_peer 127.0.0.1 parent 80 0 originserver proxy-only no-digest no-query http11
對於 http_port http11
來說就是對 Client 端啟用支援 HTTP1.1HTTP/1.1 200 OK
而原本沒有 http11
的話則預設就是HTTP/1.0 200 OK
cache_peer http11
則是對後端 Server 啟用 HTTP1.1GET /xxxx/xxxx.jpg HTTP/1.1
而如果沒有 http11
的話則會是GET /xxxx/xxxx.jpg HTTP/1.0
cache_peer http11
之後我們也要把剛剛 nginx gzip 用 1.0 的方式改一下所以把剛剛 nginx 的設定改成
gzip_http_version 1.1;
改成 HTTP1.1 的方式回給 Client 之後Connection:Close
才表示關閉長連接Connection
才表示啟用
最後在 squid 啟用 HTTP1.1 會跟 POST 的方法打架squid.conf
加入
ignore_expect_100 on
參考資料: