Nginx反向代理编码踩坑

3,046 阅读1分钟

起因

由于拿nginx做测试,代理了两个服务网页,一个是UTF-8,一个是GBK的。

  • sub_filter替换内容的过程中,发现英文都没问题,唯独中文的替换没有成功。默认utf8是成功的。
  • 为了解决中文能够被替换的问题,我找了好多地方,看了下大家似乎很少有人提及这个问题,最后发现,其实还是在编码上。

例子

 proxy_set_header Accept-Encoding ""; # 防止网站gzip
 sub_filter '中文' '英文'; #utf8网页有效,gbk编码网页可能无效
 sub_filter 'popup' '888'; # 英文数字替换默认下有效
 sub_filter_once off;# 全部替换
nginx.conf 该文件另存为GBK编码格式,即可解决!!!!!

中文不生效跟配置模块一点关系都没!

折中解决办法

这里要注意,如果此刻再去替换utf-8的中文,一样会没用。所以这里建议拆分nginx.conf配置文件,这样可以让不同的文件编码不同,从而"兼容"。但是下次更新,务必牢记编码,切勿存回UTF8。

  • 这是折中办法,欢迎有更好的办法可以评论推荐~