Nginx的反向代理问题

天天-_- 发布于 2014/07/16 21:47
阅读 6K+
收藏 0

自己有一个境外的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都有

请问有没有懂得大神帮我解决下这个问题 



加载中
0
laichendong
laichendong
报错说的是百度的服务器强制的断开了你的连接。应该是他发现了你的反向代理行为,然后干掉的。看一下你nginx发给220.181.112.244:80的请求头,该干掉的干掉,该加上的加上,伪装一下下。
0
laichendong
laichendong
proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;  把这个去掉,别加 X-Forwarded-For  试试。
0
天天-_-
天天-_-

引用来自“laichendong”的评论

proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;  把这个去掉,别加 X-Forwarded-For  试试。

依旧是502 Bad Gateway。报错信息依旧是:

2014/07/17 13:03:21 [error] 17160#6880: *1 WSARecv() failed (10054: An existing connection was forcibly closed by the remote host) while reading response header from upstream, client: 59.52.146.123, server: 127.0.0.1, request: "GET /baidu HTTP/1.1", upstream: "http://220.181.112.244:80/", host: "XXX.chinacloudapp.cn:8090"

0
天天-_-
天天-_-

引用来自“laichendong”的评论

报错说的是百度的服务器强制的断开了你的连接。应该是他发现了你的反向代理行为,然后干掉的。看一下你nginx发给220.181.112.244:80的请求头,该干掉的干掉,该加上的加上,伪装一下下。
我试了下,看来是很多网站都阻止了反向代理,发现反向代理就强制断开连接,我会试试弄下请求头 
0
fengyqf
fengyqf
0. winX,汗! 1. fq有Google,要度娘干毛! 2. 不建议全局代理,推荐foxyproxy 3. 网上有国内ip表,可以考虑用
返回顶部
顶部