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