nginx – nginx: bind()到:80失败(98:地址已经在使用)

突然之间,我得到了下面的nginx错误

* Restarting nginx * Stopping nginx nginx ...done. * Starting nginx nginx nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] still could not bind() ...done. ...done. 

如果我跑

 lsof -i :80 or sudo fuser -k 80/tcp 

我什么也得不到 没有在港口80

然后我运行下面的:

 sudo netstat -pan | grep ":80" tcp 0 0 127.0.0.1:8070 0.0.0.0:* LISTEN 15056/uwsgi tcp 0 0 10.170.35.97:39567 10.158.58.13:8080 TIME_WAIT - tcp 0 0 10.170.35.97:39564 10.158.58.13:8080 TIME_WAIT - tcp 0 0 10.170.35.97:39584 10.158.58.13:8080 TIME_WAIT - tcp 0 0 10.170.35.97:39566 10.158.58.13:8080 TIME_WAIT - tcp 0 0 10.170.35.97:39571 10.158.58.13:8080 TIME_WAIT - tcp 0 0 10.170.35.97:39580 10.158.58.13:8080 TIME_WAIT - tcp 0 0 10.170.35.97:39562 10.158.58.13:8080 TIME_WAIT - tcp 0 0 10.170.35.97:39582 10.158.58.13:8080 TIME_WAIT - tcp 0 0 10.170.35.97:39586 10.158.58.13:8080 TIME_WAIT - tcp 0 0 10.170.35.97:39575 10.158.58.13:8080 TIME_WAIT - tcp 0 0 10.170.35.97:39579 10.158.58.13:8080 TIME_WAIT - tcp 0 0 10.170.35.97:39560 10.158.58.13:8080 TIME_WAIT - tcp 0 0 10.170.35.97:39587 10.158.58.13:8080 TIME_WAIT - tcp 0 0 10.170.35.97:39591 10.158.58.13:8080 TIME_WAIT - tcp 0 0 10.170.35.97:39589 10.158.58.13:8080 TIME_WAIT - 

我很难过

如何debugging?

我正在使用uwsgi

proxy端口8070. uwsgi正在运行。 Nginx不是。 我使用的是Ubuntu 12.4

以下是我的nginx conf文件的相关部分

 upstream uwsgi_frontend { server 127.0.0.1:8070; } server { listen 80; server_name 127.0.0.1; location = /favicon.ico { log_not_found off; } location / { include uwsgi_params; uwsgi_buffering off; uwsgi_pass 127.0.0.1:8070; } } 

这里是我如何在Ubuntu 12.04上安装nginx

 nginx=stable;add-apt-repository ppa:nginx/$nginx; apt-get update apt get install nginx-full 

[::]:80是一个ipv6地址。

如果你有一个监听端口80的nginxconfiguration,并且在端口[::]:80上,则会导致这个错误。

我有我的默认网站,可用文件中的以下内容:

 listen 80; listen [::]:80 default_server; 

你可以通过将ipv6only=on添加到[::]:80这个问题:

 listen 80; listen [::]:80 ipv6only=on default_server; 

有关更多信息,请参阅:

http://forum.linode.com/viewtopic.php?t=8580

http://wiki.nginx.org/HttpCoreModule#listen

我通过运行sudo apachectl stop解决这个问题 – 结果发现Apache在后台运行,并阻止了nginx从所需的端口启动。

在ubuntu上运行sudo /etc/init.d/apache2 stop

我发现我从来没有过的问题。

我只需要删除/etc/nginx/sites-available/default 。 然后它的工作。

我的conf在/etc/nginx/default

我也遇到了同样的错误。 nginx:[emerg] bind()到[::]:80失败(98:地址已经在使用),当我在浏览器中键入本地主机,然后我越来越

有用!

这是此服务器的默认网页。

networking服务器软件正在运行,但尚未添加内容。 而不是nginx的欢迎页面,apache2运行在同一个端口上,

  1. findapache2 ports.conf文件

    sudo /etc/apache2/ports.conf

  2. 改变80以外的端口,我把它做成70

  3. 保存文件

  4. 重启你的系统

它也适用于你,如果你在浏览器中inputlocalhost,你会得到nginx的欢迎页面

我有几个* .save文件(来自nano的紧急转储文件)来自我的站点中不同的NGINXconfiguration文件 – avilable目录。 一旦我删除这些.save文件,NGINX重新启动罚款。 我认为这些是无害的,因为没有相应的符号链接,但我想我错了。