nginx:nginx:[emerg] bind()到0.0.0.0:80失败(98:地址已在使用中)

时间:2019-09-13 07:41:45

标签: nginx

我无法启动nginx。每次我在命令行上输入“ nginx”时,我都会看到:

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)

打印几次

我使用ubuntu 14.04

我已经累了:

  1. 将本地地址更改为80以外的其他值,例如70,但是错误是

    nginx:[emerg] bind()到0.0.0.0:70失败(98:地址已在使用中)

    nginx:[emerg]对[::]:70的bind()失败(98:地址已在使用中)

;

  1. fuser -k 80 / tcp:

我的netstat -tulpn显示以下内容:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      18170/nginx 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3156/sshd   
tcp6       0      0 :::80                   :::*                    LISTEN      18170/nginx 
tcp6       0      0 :::22                   :::*                    LISTEN      3156/sshd   

之后     定影器-k 80 / tcp 我得到:     80 /吨:18170 18171 并且netstat显示:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3156/sshd   
tcp6       0      0 :::22                   :::*                    LISTEN      3156/sshd   

我尝试重新启动Nginx

 service nginx stop
    service nginx start

但是当我再次键入nginx时,我看到了

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
再次

几次。

nginx -t 

显示:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

此外,我没有安装apache。

我的/etc/nginx/conf.d/[sitename]conf:

server {

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

        server_name     [sitename] www.[sitename];
        root            /var/www/[sitename];
        index           index.html;

        gzip            on;
        gzip_comp_level 3;
        gzip_types      text/plain text/css application/javascript image/*;
}

我试图跑步:

grep -r listen /etc/nginx/*

检查是否未设置两次监听,但仅显示:

/etc/nginx/conf.d/[sitename].conf:      listen          80;
/etc/nginx/conf.d/[sitename].conf:      listen          [::]:80 ipv6only=on;
/etc/nginx/nginx.conf:#         listen     localhost:110;
/etc/nginx/nginx.conf:#         listen     localhost:143;

我很困惑,因为netstat显示nginx实际上在该端口上,但是我仍然收到错误消息,并且我的网页无法访问(找不到404,nginx)

我还能尝试什么?

2 个答案:

答案 0 :(得分:1)

我认为正在发生的事情是您已经在运行nginx,并且尝试再次运行它。您有两种启动方法。

1-使用#include <string> #include <iostream> #include <conio.h> #include <algorithm> using namespace std; string disemvowel(string str) { char vowels[] = { 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U' }; char *finder; for (int i = 0; i < str.length(); i++) { char active = str[i]; finder = find(vowels, vowels + 10, active); if (finder != vowels + 10) { str.erase(str[i], 0); } } return str; } int main() { string str; cout << "say something \n"; cin >> str; cout << disemvowel(str); _getch(); return 0; }

手动

2-或使用Systemctl(如果重新启动或发生故障,它将自动启动nginx)

因此,如果您已经使用过“ 1”,那么正常情况下,运行“ 2”会告诉您地址已经被使用。反之亦然。

我建议您重新启动,然后使用systemctl sudo nginx重新启动nginx,然后检查其是否正在运行sudo systemctl restart nginx。如果它处于活动状态,则不要尝试再次运行sudo systemctl status nginx

答案 1 :(得分:0)

我在 Ubuntu 16.04LTS 上的 Nginx 1.16.1 上有类似的症状。我很确定已经预先加载了一些像 /etc/nginx/sites-available/* 这样的配置来导致这个冲突。

我只是重新安装

apt purge   nginx nginx-common nginx-full
apt install nginx nginx-common nginx-full

systemctl restart nginx

然后修复就消失了