有台生产服务器, Nginx 每天都会因为不同原因 exit 一次,虽然配了自动重启,有没办法排查是什么原因?平均一天 1820 万请求

85 天前
 drymonfidelia

每天原因都不一样,这是今天的日志

Aug 15 13:07:32 hostname nginx[3297853]: nginx: [emerg] host not found in upstream "backend.example.com" in /etc/nginx/sites-enabled/app1:25
Aug 15 13:07:32 hostname nginx[3297853]: nginx: configuration file /etc/nginx/nginx.conf test failed
Aug 15 13:07:32 hostname systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE
Aug 15 13:07:32 hostname systemd[1]: nginx.service: Failed with result 'exit-code'.
Aug 15 13:07:32 hostname systemd[1]: Failed to start A high performance web server and a reverse proxy server.

在这几秒前崩了没写日志,这个日志是刚自动重启后又崩了的。没改配置,10 秒后第三次自动重启就成功了。backend 在别的服务器上,内网 DNS 也一直正常

3016 次点击
所在节点    NGINX
24 条回复
NevadaLi
85 天前
upstream 后端没起来?
daimaosix
85 天前
看看是不是被 CC 了
kk2syc
85 天前
内网 DNS 的问题,在 /etc/hosts 中配置 backend.example.com IP 试试看
lpe234
85 天前
感觉,`内网 DNS 也一直正常` 和 `host not found in upstream "backend.example.com" ` 相比较而言,NGINX 的日志更可信
yannxia
85 天前
host not found in upstream ,这个很明确吧···
billbur
85 天前
"backend.example.com"这可不像一个生产环境该出现的域名
drymonfidelia
85 天前
@billbur 是公司的域名,我发日志的时候换成了 example
march1993
85 天前
@drymonfidelia 挂之前的日志呢? sudo dmesg 看看有没有 OOM
drymonfidelia
85 天前
@march1993 挂之前没有日志,就突然挂了
wushenlun
85 天前
upstream 别写域名写 ip ,内网 dns 问题,最好要有 debug 日志
yinmin
85 天前
upstream 写 ip 。如果 upstream 是 http ,加:proxy_set_header ;如果 upstream 是 https ,加:proxy_ssl_name 、proxy_ssl_server_name 、proxy_set_header

参考代码如下:
location /app/ {
proxy_pass https://192.168.1.100:443;
proxy_ssl_name backend.example.com;
proxy_ssl_server_name on;
proxy_set_header Host backend.example.com;
...
}
abolast
85 天前
/etc/nginx/sites-enabled/app1 这个文件应该脱敏贴一下吧,nginx 迭代这么多年指定是不会有容易被碰到的 bug ,大概率是你配置写得有问题
catamaran
85 天前
有工具在改配置文件? configuration file /etc/nginx/nginx.conf test failed
runwu2022
85 天前
nginx 的配置文件里面 upstream 块配置检查一下,报错明显指向 upstream 内的 server host 主机无法解析或者无法找到
blackeeper
85 天前
这个问题我遇到过,排查过,就是内网 DNS 服务器的问题,写死到 hosts 文件就可以了
drymonfidelia
85 天前
@wushenlun
@runwu2022
@blackeeper
@yinmin 我记得 Nginx 是只有启动的时候会解析一次 DNS ,如果是 DNS 的问题的话应该不会中途崩掉吧?
@abolast 里面 import 了十几个文件,不知道应该贴哪个
hefish
85 天前
@drymonfidelia /etc/nginx/sites-enabled/app1 贴这个。
yinmin
84 天前
@drymonfidelia

关于“host not found in upstream”错误,你使用 11 楼的写法,就可以避免了。

关于不明原因的退出重启,如果你的 nginx 是基于 systemd (systemctl)部署的,你可以试试这命令查看 nginx 系统级日志:journalctl -u nginx

如果使用 docker 部署的,可以试试:docker logs <nginx 容器名称>
zpfhbyx
84 天前
```
upstream backend {
server xxx.com;
}

localtion / {
proxy_pass http://backend;
......
}
```
blackeeper
84 天前
@drymonfidelia 你这个 nginx 是 reload 了,然后 dns 没办法解析,ng 就退出了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1065205

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX