每天原因都不一样,这是今天的日志
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 也一直正常
![]() | 1 swLoXtOtd89pGg8t 2024-08-15 13:24:42 +08:00 upstream 后端没起来? |
![]() | 2 daimaosix 2024-08-15 13:24:50 +08:00 看看是不是被 CC 了 |
![]() | 3 v1 2024-08-15 13:24:50 +08:00 内网 DNS 的问题,在 /etc/hosts 中配置 backend.example.com IP 试试看 |
![]() | 4 lpe234 2024-08-15 13:25:57 +08:00 感觉,`内网 DNS 也一直正常` 和 `host not found in upstream "backend.example.com" ` 相比较而言,NGINX 的日志更可信 |
5 yannxia 2024-08-15 13:27:09 +08:00 host not found in upstream ,这个很明确吧 |
6 billbur 2024-08-15 13:28:32 +08:00 "backend.example.com"这可不像一个生产环境该出现的域名 |
7 drymonfidelia OP @billbur 是公司的域名,我发日志的时候换成了 example |
8 march1993 2024-08-15 13:39:56 +08:00 @drymonfidelia 挂之前的日志呢? sudo dmesg 看看有没有 OOM |
9 drymonfidelia OP @march1993 挂之前没有日志,就突然挂了 |
![]() | 10 wushenlun 2024-08-15 14:21:59 +08:00 via Android upstream 别写域名写 ip ,内网 dns 问题,最好要有 debug 日志 |
11 yinmin 2024-08-15 14:50:37 +08:00 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; ... } |
12 abolast 2024-08-15 15:18:32 +08:00 /etc/nginx/sites-enabled/app1 这个文件应该脱敏贴一下吧,nginx 迭代这么多年指定是不会有容易被碰到的 bug ,大概率是你配置写得有问题 |
![]() | 13 catamaran 2024-08-15 16:16:45 +08:00 有工具在改配置文件? configuration file /etc/nginx/nginx.conf test failed |
![]() | 14 runwu2022 2024-08-15 16:36:17 +08:00 nginx 的配置文件里面 upstream 块配置检查一下,报错明显指向 upstream 内的 server host 主机无法解析或者无法找到 |
![]() | 15 blackeeper 2024-08-15 17:56:58 +08:00 这个问题我遇到过,排查过,就是内网 DNS 服务器的问题,写死到 hosts 文件就可以了 |
16 drymonfidelia OP @wushenlun @runwu2022 @blackeeper @yinmin 我记得 Nginx 是只有启动的时候会解析一次 DNS ,如果是 DNS 的问题的话应该不会中途崩掉吧? @abolast 里面 import 了十几个文件,不知道应该贴哪个 |
17 hefish 2024-08-15 18:25:46 +08:00 @drymonfidelia /etc/nginx/sites-enabled/app1 贴这个。 |
18 yinmin 2024-08-15 19:01:48 +08:00 @drymonfidelia 关于“host not found in upstream”错误,你使用 11 楼的写法,就可以避免了。 关于不明原因的退出重启,如果你的 nginx 是基于 systemd (systemctl)部署的,你可以试试这命令查看 nginx 系统级日志:journalctl -u nginx 如果使用 docker 部署的,可以试试:docker logs <nginx 容器名称> |
![]() | 19 justseemore 2024-08-15 19:10:47 +08:00 |
![]() | 20 blackeeper 2024-08-15 22:26:27 +08:00 @drymonfidelia 你这个 nginx 是 reload 了,然后 dns 没办法解析,ng 就退出了。 |
![]() | 21 xxxccc 2024-08-16 09:47:35 +08:00 “/etc/nginx/sites-enabled/app1:25” 看看这个文件的第 25 行吧 |
22 drymonfidelia OP @xxxccc 第 25 行就是 proxy_pass 没什么特别的 |
23 drymonfidelia OP @yinmin 我贴的就是 `journalctl -u nginx` 输出的日志,之前不知道为什么没输出日志直接崩了,现在按照你说的把域名换成 IP 了,不知道今天还会不会崩 |
24 yinmin 2024-08-16 15:02:04 +08:00 @drymonfidelia 你查一下/var/log/nginx 下面的日志文件 access.log 、error.log 在 nginx 异常重启前的日志情况 如果日志文件很大,可以使用 awk 根据时间查看: awk '$4 >= "[15/Aug/2024:13:07:00" && $4 <= "[15/Aug/2024:13:07:33"' /var/log/nginx/access.log awk '$1 >= "2024/08/15" && $1<= "2024/08/15" && $2 >="13:07:00" && $2<="13:07:33"' /var/log/nginx/error.log $4 是 access.log 的日期的位置,如果你们自定义过 access.log 的格式,可以修改到匹配的位置 |