做个记录,踩坑过程~!!
由于项目需要使用Nginx做反向代理时,需要对源站返回的内容做一些替换,这些内容有 HTML,CSS,和JS等,Nginx自带的ngx_http_sub_module 模块可以实现替换的功能。
今天填写好,发现怎么简单的替换也不行,后来百度说要 proxy_set_header Accept-Encoding ''; 让上层服务器返回未压缩的代码。实际上上级服务器并没有跟随客户端进行响应,而且这样非压缩出来的网页带宽成本较高。
继续找解答,发现nginx有个内置模块叫做 http_gunzip_module,服务器做两个站点,一个反代上层+gunzip;另外一个下级反代+ http_sub_module或者其它替换模块,如:replace-filter-nginx-module 。
如果是反代到子目录,可以看演示配置代码,全站反代的话,建2个站点。
# 对上级源站进行解压
location /demo-gzip/ {
proxy_pass http://192.168.10.21/;
gunzip on;
allow 127.0.0.1/32;
deny all;
}
# 替换字符串功能
location /demo/ {
proxy_pass http://127.0.0.1/demo-gzip/;
proxy_set_header Host demo.xxxx.com;
proxy_set_header Accept-Encoding '';
subs_filter src_string dst_string;
subs_filter_types application/javascript text/css;
}
|
|