我的nginx有问题。我尝试了不同的解决方案,但对我来说没什么用。 这是我的错误:
4 root@BANANAS ~ # sudo service nginx restart :(
Restarting nginx: nginx: [emerg] bind() to [::]:443 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:443 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:443 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:443 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:443 failed (98: Address already in use)
nginx: [emerg] still could not bind()
nginx.
你能帮助我吗?
答案 0 :(得分:62)
可能其他进程正在使用指定的端口:
sudo netstat -tulpn
获取已使用443的进程的PID。并使用kill命令发送信号。
sudo kill -2 <PID>
sudo service nginx restart
或者你可以这样做:
sudo fuser -k 443/tcp
确保您不使用旧语法:
server {
listen :80;
listen [::]:80;
}
以上语法将导致
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
正确的语法:
server {
listen 80;
listen [::]:80 ipv6only=on;
}
或
server {
listen [::]:80;
}
上述两种语法都可以实现相同的功能,同时监听ipv4和ipv6。
答案 1 :(得分:5)
另一种方式(根据我的经验)只是强制退出在该端口上运行的进程<style>
@media print {
.table td.cell {
background-color: blue !important;
}
}
</style>
<table class="table">
<tr>
<td class="cell">TR 1</td>
</tr>
</table>
443
或者如果您在端口sudo fuser -k 443/tcp
上运行,只需将端口更改为
80
希望它可以帮助那些有同样问题的人
替代使用sudo fuser -k 80/tcp
:
找到PID&amp;杀死在端口lsof
上运行的进程
443
答案 2 :(得分:1)
谢谢您的回答。 运行后
sudo netstat -tulpn
我意识到我的apache2在端口80上运行。这可能是在我使用Certbot在服务器上安装SSL之后完成的。 我删除了Apache2,服务器已启动并正在运行。
apt remove apache2
这成功了!再次谢谢你。
答案 3 :(得分:1)
当我杀死绑定到80和443端口的nginx进程时,该进程总是以新的PID重新出现。
这有助于我在/etc/nginx/nginx.conf
中暂时注释此行,重新启动nginx,然后取消注释该行:
worker_processes auto;
答案 4 :(得分:1)
我收到上述错误是由于在同一服务器块内不小心重复了两次listen指令,如下所示:
server {
listen [::]:443 ssl ipv6only=off;
listen 443 ssl;
...
}
将其更改为:
server {
listen 443 ssl;
...
}
或
server {
listen [::]:443 ssl ipv6only=off;
...
}
解决了重新启动服务器时的问题:sudo服务nginx start
答案 5 :(得分:0)
如果使用虚拟机,则可能只需要重新启动虚拟机即可。昨天我遇到了同样的问题,无法让Nginx开始使用本文中的任何方法。因此,我今天早上启动了虚拟机,检查了正在运行的进程,然后看到Nginx在端口80上运行。昨天,我什至用systemctl查看了Nginx的状态,但说失败了,但今天它处于活动状态。不知道这里发生了什么,但是值得一试。
答案 6 :(得分:0)
首先,我们必须检查有多少服务在端口 80 上运行。要检查,您可以运行以下命令:
sudo netstat -plant | grep 80
这将显示哪个服务正在侦听端口 80,然后您可以决定是要按原样使用该服务还是要使用 Nginx。
如果是 Apache,你需要决定是使用 Apache 还是 Nginx。
如果只想拥有Nginx,需要先停止Apache:
sudo systemctl stop apache2 && sudo systemctl start nginx