gzip压缩是否启用,除了服务器支持外,客户端也要支持。 能不能让客户端无论有没有发送Accept-Encoding,服务器都会发送压缩内容呢? 经测试,此种做法并不会影响普通用户,因为他们都是用先进的浏览器上网的; 要做到这点,需要有两个nginx,配置两个虚拟主机也可以,并不用启动两个nginx主进程。 前端nginx: 复制代码 代码如下:
upstream www.backend.jquerycn.cn{
server 127.0.0.1:80; } server { server_name www.jquerycn.cn; listen 80; location / { proxy_pass http://www.backend.jquerycn.cn; include proxy.conf; proxy_set_header Accept-Encoding 'gzip'; } } 注意proxy_pass到的upstream是www.backend.jquerycn.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.jquerycn.cn; listen 80; location / { root /html/; gzip on; gzip_http_version 1.0; } } 测试: 不加-I参数试试:curl http://www.jquerycn.cn
|