2017-02-17 51 views
12

我对nginx有问题。我尝试了不同的解决方案,但对我来说没有任何工作。 这是我的错误:Nginx无法启动(地址已在使用中)

4 [email protected] ~ # 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

尝试一些在这里发布的答案[nginx - nginx:\ [emerg \] bind()to \ [:: \]:80失败(98:Address alrea dy在使用)](http://stackoverflow.com/questions/14972792/nginx-nginx-emerg-bind-to-80-failed-98-address-already-in-use) –

+0

它看起来像https已经在使用。使用'netstat -tulpn'来找出正在使用它的东西。 'netstat -tulpn'中的 – Donal

+0

没有在端口443上听到。而且我在评论中尝试了所有这些方法。 – Herbert89

回答

22

也许其他进程正在使用指定的端口:

sudo netstat -tulpn 

获取已使用443进程的PID并与kill命令发送信号。

sudo kill -2 <PID> 

sudo service nginx restart 

Aternatively你可以这样做:

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。

+0

我没有找到一个程序,使用端口443.这是我的问题。 – Herbert89

+0

'sudo netstat -tulpn'的输出是什么? –

+0

这是要评论,但这里是一个链接:http://pastebin.com/QETaUH2F – Herbert89

1

另一种方式(从我的经验)就是强制退出该端口上运行的过程443

sudo fuser -k 443/tcp 

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

sudo fuser -k 80/tcp 

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

相关问题