首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx不会启动(已在使用的地址)

问Nginx不会启动(已在使用的地址)
EN

Stack Overflow用户
提问于 2017-02-17 16:55:36
回答 8查看 117.1K关注 0票数 93

我对nginx有意见。我尝试了不同的解决方案,但对我来说没有任何效果。这就是我的错误:

代码语言:javascript
复制
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.

你能帮帮我吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2017-02-17 17:14:20

可能是其他进程正在使用指定的端口:

代码语言:javascript
复制
sudo netstat -tulpn

获取已经使用443的进程的PID。用杀死命令发送信号。

代码语言:javascript
复制
sudo kill -2 <PID>

sudo service nginx restart

你也可以这样做:

代码语言:javascript
复制
sudo fuser -k 443/tcp

确保不使用旧语法:

代码语言:javascript
复制
server {
    listen :80;
    listen [::]:80;
}

以上语法将导致

代码语言:javascript
复制
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)

正确语法:

代码语言:javascript
复制
server {
    listen 80;
    listen [::]:80 ipv6only=on;
}

或

代码语言:javascript
复制
server {
    listen [::]:80;
}

上述两种语法都将实现相同的功能,同时监听ipv4和ipv6。

票数 151
EN

Stack Overflow用户

发布于 2018-02-01 09:37:50

另一种方法(根据我的经验)是强制退出在端口443上运行的进程。

代码语言:javascript
复制
sudo fuser -k 443/tcp 

或者,如果您在端口80上运行,只需将端口更改为

代码语言:javascript
复制
sudo fuser -k 80/tcp

希望它能帮助那些有同样问题的人

使用lsof**:**的替代方案

查找PID &终止在端口443上运行的进程

代码语言:javascript
复制
sudo kill -9 $(lsof -t -i :443)
票数 15
EN

Stack Overflow用户

发布于 2018-12-04 21:44:57

谢谢你的回答。跑后

代码语言:javascript
复制
sudo netstat -tulpn

我意识到我在80端口上运行了apache2。这可能是在我使用Certbot在服务器上安装SSL之后完成的。我删除了Apache2,服务器已经启动并运行。

代码语言:javascript
复制
apt remove apache2

这招成功了!再次感谢您。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42303401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档