nginx提示host not found in upstream错误

今天重启nginx,发现nginx报错,看了一下systemd的错误提示,journalctl -xe,原来报错了:

host not found in upstream

看了下配置文件,原来是proxy_pass后面跟的是域名,但以前的时候都没有出现过这个问题啊,今天才刚出现的。

后来看到有人在location段加dns,才想起来原来nginx的服务器配的dns服务器停了,那就来更新一下dns服务器吧:

vi /etc/resolv.conf

改成阿里云的DNS吧,223.5.5.5.

再重启nginx,好,一切正常。

nginx网址后自动添加斜线

原因:

公司的前端nginx,之前做的upstream负载,后来更新,直接放在了目录下面,所以之前用的地址xxxx.com/xxx就变成了xxxx.com/xxx/,但是大多数人收藏夹里放的是不带斜线/的。新地址因为放在了目录下面,实际上nginx是可以自动添加斜线的,但添加后的地址不正确,这里就要用的nginx的两个参数:

1、server_name_in_redirect on(默认),URL 重定向为: server_name 中的第一个域名 + 目录名 + /;
2、server_name_in_redirect off,URL 重定向为: 原 URL 中的域名 + 目录名 + /。

port_in_redirect off

如果port_in_redirect为off时,那么始终按照默认的80端口;如果该指令打开,那么将会返回当前正在监听的端口。

因为公司的nginx是443端口,原先在访问的时候自动把端口号弄上去了,所以就把port_in_redirect off掉就行了。