gzip压缩是否启用,除了服务器支持外,客户端也要支持。
能不能让客户端无论有没有发送Accept-Encoding,服务器都会发送压缩内容呢?
经测试,此种做法并不会影响普通用户,因为他们都是用先进的浏览器上网的; 要做到这点,需要有两个nginx,配置两个虚拟主机也可以,并不用启动两个nginx主进程。
前端nginx:
upstream www.backend.it.net.cn{
server 127.0.0.1:80; } server { server_name www.it.net.cn; listen 80; location / { proxy_pass http://www.backend.it.net.cn; include proxy.conf; proxy_set_header Accept-Encoding 'gzip'; } }
注意proxy_pass到的upstream是www.backend.it.net.cn,这是在一台机器上配置两个虚拟主机所必需的,否则就像死循环一样了。
另外一个要注意proxy.conf里最好没有写过proxy_set_header Accept-Encoding,我的proxy.conf默认有将Accept-Encoding设为空的,这会造成配置重复。 后端nginx: 后端nginx负责压缩,这里要注意gzip的版本,因为nginx是用http1.0方式作代理的,所以gzip的版本就不能是默认的1.1版,需要修改为1.0。 配置代码:
server {
server_name www.backend.it.net.cn; listen 80; location / { root /html/; gzip on; gzip_http_version 1.0; } }
测试:
不加-I参数试试:curl http://www.it.net.cn (责任编辑:IT) |