自己有一个境外的VPS,我都用这个VPS访问一些墙外网站,但是发现这个VPS无法访问百度,也不愿意去每次切换,所以想用自己的Windows Azure做一个对百度的反向代理。
这个Windows Azure是国内的,使用的是Windows Server 2012 R2,反向代理软件是用Nginx For Windows 1.7.3版本。
结合网上找到的一些教程,自己对Nginx的配置文件做了如下设置:
1.把nginx.conf中的server{}移到vhosts.conf文件,并在nginx.conf中加上include vhosts.conf;
2.在vhosts.conf文件中有这些设置
upstream baidu { server 220.181.112.244:80; } server { listen 8090; server_name 127.0.0.1; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } location /baidu { proxy_pass http://baidu/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # #error_page 500 502 503 504 /50x.html; #location = /50x.html { # root html; #} }
除了这些就没有做任何更改,但是访问XXX.chinacloudapp.cn/baidu的时候,却出现502 Bad Gateway错误。查看错误日志,有以下报错信息
2014/07/16 21:45:40 [error] 22628#12216: *11 WSARecv() failed (10054: An existing connection was forcibly closed by the remote host) while reading response header from upstream, client: 59.52.146.143, server: 127.0.0.1, request: "GET /baidu HTTP/1.1", upstream: "http://220.181.112.244:80/", host: "XXX.chinacloudapp.cn:8090"
报错信息的*11经常变换,有时候*1、*6都有
请问有没有懂得大神帮我解决下这个问题
报错说的是百度的服务器强制的断开了你的连接。应该是他发现了你的反向代理行为,然后干掉的。看一下你nginx发给220.181.112.244:80的请求头,该干掉的干掉,该加上的加上,伪装一下下。proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 把这个去掉,别加X-Forwarded-For 试试。<divclass="ref">
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。