Nginx反代实战教程

因为一些特殊的原因,我需要弄一个我司官网的反代
反代嘛,用nginx So Easy啦!
我上来就一个proxy_pass轻松搞定

location / {
    proxy_pass http://new-domain/;
}

看似没什么问题,但是一点链接就露馅了——又跳转到原域名去了
看来是需要替换一下html里的链接地址才行
我上来就一个sub_filter轻松搞定

sub_filter "http://old-domain.com/" "http://new-domain/";
sub_filter_once off; # 进行多次替换
sub_filter_types *;

如果nginx reload时报错sub_filter不存在的话,你可能需要:
Centos下重新编译nginx并添加模块

看起来好像没什么问题,测试一下
然而并没有什么卵用,sub_filter压根没有生效

经过一番Google,原来是因为sub_filter无法替换被压缩(例如gzip)过的页面内容
所以我们需要再加上一句

proxy_set_header Accept-Encoding ""; # 禁止压缩否则无法进行替换

reload一下,测试通过,反代完成~

3 条评论

昵称
  1. rilp

    为啥本地反代能绕过sni审查

    1. mokeyjay

      我没说能绕过sni审查呀?

  2. 晨曦的记忆

    不错哦