我无法启动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
我已经累了:
将本地地址更改为80以外的其他值,例如70,但是错误是
nginx:[emerg] bind()到0.0.0.0:70失败(98:地址已在使用中)
nginx:[emerg]对[::]:70的bind()失败(98:地址已在使用中)
;
我的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)
我还能尝试什么?
答案 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
然后修复就消失了