用百度举例:
反向代理 用 www.abc.com 反代 www.baidu.com ;
用户访问 www.abc.com ;
www.baidu.com 返回重定向 www.baidu2.com ;
结果用户浏览器重定向到 www.baidu2.com ;
反代如何修改 www.baidu.com 返回的重定向地址?
描述下使用场景:
手头有一百多个网站,域名都未备案,想从香港主机转回国内。
假设我有一个在阿里云备案的域名 xxx.com ,
那么我把所有网站迁移到阿里云杭州机房,所有网站通过我的已备案域名访问,举个例子,客户网站域名是 abcaaa.com ,那么就绑定 abcaaa.com.hz.xxx.com 。
另在海外开一个 vps 做反向代理。
用户访问 abcaaa.com ,反代通过 abcaaa.com.hz.xxx.com 从国内取数据,再返回用户。
下面是反代的配置,其实本帖的问题刚解决好,正则很烂,
server {
listen 80;
server_name $host;
location / {
proxy_pass http://8.8.8.8:80;
proxy_set_header Host $host.hz.xxx.com;
sub_filter '.hz.acfuck.com' '';
sub_filter_once off;
proxy_redirect ~^http://(.+).hz.xxx.com(.+)$ http://$1$2;
#proxy_redirect 通过这个重写了重定向
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60;
proxy_read_timeout 600;
proxy_send_timeout 600;
}
}
1
TheCure 2016-01-10 16:25:54 +08:00 via iPhone
修改 location
|
2
TheCure 2016-01-10 16:28:27 +08:00 via iPhone
rewrite host 来修改返回的 http 请求的 location
|
3
Slienc7 2016-01-10 16:31:28 +08:00
subs_filter
|
4
uyear 2016-01-11 10:33:12 +08:00
这里面有两个问题:
首先,正常访问 baidu 的时候会不会跳到 baidu2 ,如果不跳,那就是被区别对待了,区别对待是有原因的,无非就那几个变量:来路, host ,端口 ,打开 debug 日志可以看到请求方式,修改那几个传过去的 header ,改成跟你正常的看他还跳不跳。这个是基于 header 的 第二个问题,有可能是 js 干的,@xgowex 的替换可以改变响应体,包括 js |