Nginx反向代理超时问题

iLinx 发布于 06/12 11:45
阅读 135
收藏 0

场景:

现在有两个代理服务环境,一个windows server环境,一个Centos7,上面都安装了nginx服务。需要对一个后端服务(wx.aaa.com:8087),因为需要使用80端口进行访问,后端服务没有备案,所以利用备案的二级域名进行反向代理,即分配了一个 wx.bbb.com 的域名,通过nginx进行反向代理转发到 wx.aaa.com:8087上去。

问题现象:

在centos7上的nginx代理转发时访问超时,错误日志如下:

2019/06/12 11:08:32 [error] 26382#0: *4977698 upstream timed out (110: Connection timed out) while connecting to upstream, client: 1xx.1xx.1xx.50, server: wx.bbb.com, request: "GET /html/normal/test.html?code=sbsss&state=caa HTTP/1.1", upstream: "http://wx.aaa.com:8087/html/normal/test.html?code=sbsss&state=caa", host: "wx.bbb.com"

centos7上直接使用wget等命名,直接访问wx.aaa.com:8087是可以访问到网页内容的。

但是将 wx.bbb.com 解析指向windows的服务器,nginx代理访问就正常了

其中nginx.conf中的配置如下(两个环境都一样,本处直贴了代理这部分,其他的server都一样,剩余的配置就是nginx默认的,如果需要我单独再提供下):

server {
        listen       80;
        server_name  wx.bbb.com;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
              proxy_redirect off;
              proxy_set_header Host $http_host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_pass http://wx.aaa.com:8087/;
        }
    }

环境补充说明:

1、两台代理服务器(windows、centos)都是阿里云服务器,后端服务客户自己的机房(电信宽带)。

2、域名www.aaa.com是客户域名,指向客户本地机房;

3、域名wx.bbb.com是阿里云购买,已备案通过;

4、windows下nginx安装是直接从官网下载windows版本,解压使用的;centos是使用yum安装的;

5、centos上的ngingx还配置有其他的的方向代理,均能正常访问;

 

这个问题困扰很久了,一直没有找到原因,如有大佬能解决,一定感谢!也欢迎各位提出自己的思路。

顺便再提另外一个问题:直接访问速度很正常,但方向代理后,有些服务就存在访问缓慢的问题,也还没有找到根源,希望nginx大佬提供点思路。

 

以下是问题补充:

@iLinx:补充说明:我也查询到过nginx会存在dns缓存的问题,参考:http://www.syyong.com/net/Using-nginx-s-proxy_pass-function-to-do-domain-name-forwarding-causes-an-accident.html。 所以将域名改成ip后测试过,还是存在相同情况。 (06/12 12:45)
@iLinx:问题找到但未解决:原因是由于在linux服务器上,wx.aaa.com指向的ip(wget http://181.xxx.xxx.22:8087)都访问超时,nginx运行是正常的。所以切换到linux的nginx转发后也是超时的现象。但具体为啥只有在linux服务器上访问 http://181.xxx.xxx.22:8087 会超时,这个原因还没有具体找到,猜测可能是客户防火墙造成。 (06/28 09:03)
加载中
0
夏洛寇福尔摩斯

先测试一下 把 proxy_pass http://wx.aaa.com:8087/;  中wx.aaa.com改成hosts映射的ip地址

iLinx
iLinx
回复 @夏洛寇福尔摩斯 : 测试发现在linux服务器上,ip直接访问都超时。windows服务器访问就没有问题,猜测可能是客户的防火墙造成。暂时没想到其他可能原因了。感谢:smile:
iLinx
iLinx
回复 @夏洛寇福尔摩斯 : 好的,我再验证下
夏洛寇福尔摩斯
回复 @iLinx : 看一下服务器和后端连接网络是否丢包或者延迟。可以尝试使用以下参数测试一下。 proxy_connect_timeout 600; proxy_read_timeout 600; proxy_send_timeout 600;
iLinx
iLinx
已经改成ip测试过,还是同样的现象。
0
当朝宰相
当朝宰相

安装 nginx的nginx-upstream-dynamic-servers-master 然后在你的 upstream里的server 后面加上resolve

iLinx
iLinx
我试验下
返回顶部
顶部