服务器上有两个portal,使用Nginx空间中的Host-name划分。SSL 是使用 certbot 组织的。
把证书整理好,拿掉两个证书后(和portal的工作无关,早就过期了),Nginx服务器崩溃了。systemctl status nginx.service
最有趣的事情
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2021-12-13 10:48:55 CET; 35min ago
Docs: man:nginx(8)
错误:
des. 13 10:48:55 u nginx[248435]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
des. 13 10:48:55 u nginx[248435]: nginx: [emerg] still could not bind()
des. 13 10:48:55 u systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE
des. 13 10:48:55 u systemd[1]: nginx.service: Failed with result 'exit-code'.
des. 13 10:48:55 u systemd[1]: Failed to start A high performance web server and a reverse proxy server.
令人惊讶的是,两个门户仍然可用(我马上说数据没有被缓存)。也就是说,从外部看,一切正常。
我检查了什么:
ps -e
,找到了 pid ,nginx
这就是那里:三个进程,看起来像这样
● snap.certbot.certbot.***********.scope
Loaded: loaded (/run/systemd/transient/snap.certbot.certbot.***********.scope; transien>
Transient: yes
Active: active (running) since Mon 2021-12-13 09:39:30 CET; 1h 35min ago
- 我试图杀死与 相关的进程
nginx
,但它们再次上升(我systemd/system/nginx.service
删除了自动重新加载并通过 daemon-reload 重新启动,它没有帮助) - 我试图杀死端口 80 上的进程,但它们又上升了
谁知道问题的根源以及在哪里挖掘以使其nginx
“按应有的方式”工作?或者你能澄清我做错了什么吗
UPD
添加配置检查nginx
~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
检查端口表明 nginx 正在使用它们
~$ sudo lsof -i -P -n | grep LISTEN
nginx 245336 www-data 6u IPv4 3142018 0t0 TCP *:80 (LISTEN)
nginx 245336 www-data 7u IPv6 3142019 0t0 TCP *:80 (LISTEN)
nginx 245336 www-data 8u IPv6 3142020 0t0 TCP *:443 (LISTEN)
nginx 245336 www-data 9u IPv4 3142021 0t0 TCP *:443 (LISTEN)
nginx 245337 www-data 6u IPv4 3142018 0t0 TCP *:80 (LISTEN)
nginx 245337 www-data 7u IPv6 3142019 0t0 TCP *:80 (LISTEN)
nginx 245337 www-data 8u IPv6 3142020 0t0 TCP *:443 (LISTEN)
nginx 245337 www-data 9u IPv4 3142021 0t0 TCP *:443 (LISTEN)
nginx 245338 www-data 6u IPv4 3142018 0t0 TCP *:80 (LISTEN)
nginx 245338 www-data 7u IPv6 3142019 0t0 TCP *:80 (LISTEN)
nginx 245338 www-data 8u IPv6 3142020 0t0 TCP *:443 (LISTEN)
nginx 245338 www-data 9u IPv4 3142021 0t0 TCP *:443 (LISTEN)
~$ sudo ps -ax | grep nginx
245336 ? S 0:00 nginx: worker process
245337 ? S 0:00 nginx: worker process
245338 ? S 0:00 nginx: worker process
250704 pts/7 S+ 0:00 grep --color=auto nginx
要检查配置,该命令将有所帮助
nginx -t
,并且为了重新读取配置nginx -s reload
看起来这一切都与 certbot 服务有关。在 中查找,
/etc/systemd/system/
很可能你会在那里找到定义,尝试停止(另外,可能有 cron 计时器,检查/etc/cron.d/
)。从文档中的信息来看,Nginx 使用的challengehttp-01
刚好占用了80 端口。Nginx 进程不仅由 systemd 管理,还由 init.d 脚本管理:
您可以停止 nginx 进程
或更简单
如果将某些内容写入日志,您可以过滤它们:
通过进程命令头:
按 PID:
按用户:
您可以分别显示日志中存在的进程的所有 PID 和 UID