Nginx反向代理 sub_filter替换中文不生效
nginx做代理时需要对部分内容做替换,使用了sub_filter,替换的是中文字符,结果一直不生效,各种修改配置尝试,网上大部分人的原因都是因为源网页做了gzip压缩,所以自己也一直往这个方向尝试,结果折腾好久。
实在不甘心,试着换了个英文字符替换,居然成功了!
于是知道是编码问题导致的。
然后检查源网页编码是utf8的,nginx配置文件的编码是gb2312的,尝试修改nginx配置文件编码为utf8,居然成功了。
sub_filter替换中文时,nginx配置文件的编码必须和源网页的编码格式一致,否则替换不生效。英文字符则无次限制。
把配置贴出如下:
proxy_set_header Accept-Encoding ""; # 防止网站gzip
sub_filter '登入' '登录'; # 中文是,配置文件编码要和源网站一致
sub_filter 'body' 'head'; # 英文数字替换默认下有效
sub_filter_once off; # 替换全部
特此记录!