本文最后更新于 1945 天前,其中的信息可能已经有所发展或是发生改变。
有一台服务器只能对外开80端口,但该服务器有几个项目同时共用。因此做了一个方案,使用不同的url前缀,proxy_pass到对应项目监听的端口。
如default.conf配置如下
server { listen 80 default_server; location /a/ { rewrite ^/a/(.*)$ /$1 break; # 剥掉 /a 这一层 proxy_pass http://127.0.0.1:8083; } location /b/ { rewrite ^/b/(.*)$ /$1 break; proxy_pass http://127.0.0.1:8084; } location /c/ { rewrite ^/c/(.*)$ /$1 break; proxy_pass http://127.0.0.1:8085; } }
a项目配置里开启了gzip
server { listen 8083; root /path/to/a; gzip on; gzip_comp_level 3; .... }
但发现gzip未生效。
后面把gzip配置放到default.conf的location部分就正常运行了。
location /a/ { gzip on; gzip_comp_level 6; rewrite ^/a/(.*)$ /$1 break; # 剥掉 /a 这一层 proxy_pass http://127.0.0.1:8083; }
对于这问题,暂未看到合理的解释。知晓原理的同学欢迎留言指教下,谢谢。
ps: apachebench(ab) 只支持http 1.0,如果要测试gzip的话,nginx配置还需加上 gzip_http_version 1.0;