copy自loc
思路就是让nginx放行特定的cidr(不需要auth_basic验证),对于不在白名单的cidr,就要auth_basic验证
既兼顾了实用性(常用环境下不需要认证),又兼顾了安全性(被其他人用/被污染)
auth_basic "Need Authenticate.";
auth_basic_user_file /home/.htpasswd;
location / {
#https://blog.51cto.com/fengwan/1979267
satisfy any;
allow 58.242.0.0/15;
deny all;
subs_filter 'www.google.com.hk' 'ThisIsYourDomainName';
subs_filter_types text/css text/xml text/javascript;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Referer https://www.google.com.hk;
proxy_set_header User-Agent $http_user_agent;
proxy_set_header Host www.google.com.hk;
proxy_pass https://www.google.com.hk;
proxy_set_header Accept-Encoding "";
proxy_set_header Accept-Language "zh-CN";
proxy_set_header Cookie "PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=en-US:NW=1:TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2W1IQ-Maw";
proxy_cookie_domain www.google.com.hk ThisIsYourDomainName;
}
使用说明:
1.需要自己生成auth_basic_user_file,具体步骤可以谷歌
2.将ThisIsYourDomainName替换为你的反代域名,然后a记录解析服务器ip
3.需要ngx_http_substitutions_filter_module,你可能需要重新编译nginx,或者换成sub_filter
4.如果上述操作都完成了,但是用的时候却无限重定向(印象里是这样),可以修改www.google.com.hk为www.google.com或服务器ip对应国家/地区的谷歌的国家/地区搜索域名
5.哪个cidr段不需要认证,就这样写
allow 58.242.0.0/15;
6.自己网络的cidr可以访问bgp.he.net或ipip.net获取
7.建议配合ssl使用,给出的是关键配置,http和https的server需自行配置