Nginx——*5 connect() failed (111: Connection refused) while connecting to upstream

简介: Nginx——*5 connect() failed (111: Connection refused) while connecting to upstream

引言


最近有一台配置比较高的阿里服务器到期了,需要将上面的微信的项目转移到腾讯服务器上面,当我一切都弄好了以后,发现仅仅运行了一天,腾讯就提示我的网站没有进行备案,之前我都是在阿里上备案的,在腾讯上备案又需要很长的时间,所以我就找了一台配置非常低的阿里服务器做了个nginx代理,和之前配置一样的nginx却出现了下面的问题:



20180701102203126.png

这让我非常的不能理解,是什么原因造成的,在网上查了很多的资料,大家遇到这个问题,都是因为什么没有按章php那个插件,但是小编我是java,所以就没有理会他们,然后同样的配置我换上了其他在腾讯上申请的域名,发现一点问题都没有,所以很有可能就是阿里服务器通过nginx转发到腾讯的服务器上,这个域名被腾讯拦截了,又看了一些官网的上的信息,发现是在转发过程中代理的header信息有问题,也就是下面这句默认配置:



20180701102658626.png


默认的情况下是打开的,大家发现我的配置是被注释掉的,就是因为在转发过程中设置了头部信息,当注释掉以就ok了.


nginx中proxy_set_header Host $host的作用


nginx为了实现反向代理的需求而增加了一个ngx_http_proxy_module模块。其中proxy_set_header指令就是该模块需要读取的配置文件。在这里,所有设置的值的含义和http请求同中的含义完全相同,除了Host外还有X-Forward-For。

Host的含义是表明请求的主机名,因为nginx作为反向代理使用,而如果后端真是的服务器设置有类似防盗链或者根据http请求头中的host字段来进行路由或判断功能的话,如果反向代理层的nginx不重写请求头中的host字段,将会导致请求失败【默认反向代理服务器会向后端真实服务器发送请求,并且请求头中的host字段应为proxy_pass指令设置的服务器】。


 同理,X_Forward_For字段表示该条http请求是有谁发起的?如果反向代理服务器不重写该请求头的话,那么后端真实服务器在处理时会认为所有的请求都来在反向代理服务器,如果后端有防攻击策略的话,那么机器就被封掉了。因此,在配置用作反向代理的nginx中一般会增加两条配置,修改http的请求头:

proxy_set_header Host $http_host;

proxy_set_header X-Forward-For $remote_addr;

这里的$http_host和$remote_addr都是nginx的导出变量,可以再配置文件中直接使用。如果Host请求头部没有出现在请求头中,则$http_host值为空,但是$host值为主域名。因此,一般而言,会用$host代替$http_host变量,从而避免http请求中丢失Host头部的情况下Host不被重写的失误。

目录
相关文章
|
负载均衡 算法 应用服务中间件
Nginx系列教程(08) - Upstream Server 负载均衡
Nginx系列教程(08) - Upstream Server 负载均衡
655 0
|
7月前
|
网络协议 应用服务中间件 nginx
解决 nginx 启动错误host not found in upstream "XXXX.com“
在前置机上利用nginx进行反向代理的时候,我们会配置proxy_pass。在启动nginx的会报如下错误:host not found in upstream "XXXX.com“
4038 0
|
应用服务中间件 nginx
Mac Nginx nginx: [emerg] mkdir() “/usr/local/var/run/nginx/client_body_temp“ failed ...
Mac Nginx nginx: [emerg] mkdir() “/usr/local/var/run/nginx/client_body_temp“ failed ...
313 2
|
2月前
|
缓存 负载均衡 应用服务中间件
Nginx入门 -- 理解Nginx基础概念:连接(Connection)
Nginx入门 -- 理解Nginx基础概念:连接(Connection)
98 0
|
7月前
|
负载均衡 应用服务中间件 nginx
解决nginx配置负载均衡时invalid host in upstream报错
在Windows环境下,配置Nginx 1.11.5进行负载均衡时遇到问题,服务无法启动。错误日志显示“invalid host in upstream”。检查发现上游服务器列表中,192.168.29.128的主机地址无效。负载均衡配置中,两个服务器地址前误加了"http://"。修正方法是删除上游服务器列表和proxy_pass中的"http://"。问题解决后,Nginx服务应能正常启动。
564 4
解决nginx配置负载均衡时invalid host in upstream报错
|
应用服务中间件 nginx
Nginx nginx: [emerg] bind() to 0.0.0.0:8083 failed (48: Address already in use)
Nginx nginx: [emerg] bind() to 0.0.0.0:8083 failed (48: Address already in use)
433 1
|
7月前
|
应用服务中间件 nginx Windows
【报错】Windows下启动nginx报:bind() to 0.0.0.0:80 failed...
【报错】Windows下启动nginx报:bind() to 0.0.0.0:80 failed...
244 0
|
7月前
|
存储 应用服务中间件 nginx
【各种问题处理】nginx报错nginx: [error] open() “/run/nginx.pid” failed (2: No such file or directory)
【1月更文挑战第13天】【各种问题处理】nginx报错nginx: [error] open() “/run/nginx.pid” failed (2: No such file or directory)
|
缓存 负载均衡 Unix
Nginx深入详解之upstream分配方式
Nginx深入详解之upstream分配方式
676 0
|
负载均衡 应用服务中间件 nginx
Nginx之upstream被动式重试机制解读z
Nginx之upstream被动式重试机制解读z