Nginx:无法启动高性能Web服务器和反向代理服务器

Cib*_*ele 10 nginx

我尝试启动此服务,但是我不能,出现以下错误:

root@zabbix:/home/appliance# systemctl status nginx.service

nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Wed 2018-07-25 18:33:26 UTC; 1min 27s ago
  Process: 30040 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)
  Process: 30037 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)

Jul 25 18:33:25 zabbix nginx[30040]: nginx: [emerg] listen() to [::]:80, backlog 511 failed (98: Address already in use)
Jul 25 18:33:25 zabbix nginx[30040]: nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
Jul 25 18:33:25 zabbix nginx[30040]: nginx: [emerg] listen() to [::]:80, backlog 511 failed (98: Address already in use)
Jul 25 18:33:26 zabbix nginx[30040]: nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
Jul 25 18:33:26 zabbix nginx[30040]: nginx: [emerg] listen() to [::]:80, backlog 511 failed (98: Address already in use)
Jul 25 18:33:26 zabbix nginx[30040]: nginx: [emerg] still could not bind()
Jul 25 18:33:26 zabbix systemd[1]: nginx.service: Control process exited, code=exited status=1

Jul 25 18:33:26 zabbix systemd[1]: *******Failed to start A high performance web server*** and a reverse proxy server.****

Jul 25 18:33:26 zabbix systemd[1]: nginx.service: Unit entered failed state.
Jul 25 18:33:26 zabbix systemd[1]: nginx.service: Failed with result 'exit-code'.
Run Code Online (Sandbox Code Playgroud)

Mah*_*esi 57

我想知道为什么没有人提到禁用apache2

sudo service apache2 stop

您已经有一个绑定到HTTP 端口 80的进程。

您可以运行命令sudo lsof -i:80来获取使用端口的进程列表,然后停止/禁用Web 服务器。

尝试停止使用端口 80 的进程: sudo fuser -k 80/tcp

  • 严重地?我不敢相信这会成为一个问题。非常感谢你拯救了我的一天。 (3认同)

frm*_*elz 40

对我来说,此错误是由default端口 80 上的nginx 站点引起的。删除默认站点有效

sudo rm /etc/nginx/sites-enabled/default
sudo service nginx restart
Run Code Online (Sandbox Code Playgroud)

  • sudo 取消链接 /etc/nginx/sites-enabled/default (3认同)

Val*_*sky 16

您已经有一个绑定到HTTP端口80的进程。您可以运行命令sudo lsof -i:80以使用该端口获取进程列表,然后停止/禁用Web服务器。


小智 10

尝试停止使用端口 80 的进程:

sudo fuser -k 80/tcp
Run Code Online (Sandbox Code Playgroud)


小智 10

可能是配置文件有问题。您可以使用此 nginx -t -c /etc/nginx/nginx.conf命令查找配置文件中的任何错误。如果您发现错误解决了,请sudo service nginx restart再次运行。它会起作用。

请检查这里的参考


小智 8

我不得不使用:

sudo killall nginx 
Run Code Online (Sandbox Code Playgroud)

然后可以使用;

sudo systemctl start nginx
Run Code Online (Sandbox Code Playgroud)


Sud*_*han 7

尝试停止使用端口 80 的进程:

sudo fuser -k 80/tcp
Run Code Online (Sandbox Code Playgroud)

当你重新启动使用

sudo systemctl restart nginx
Run Code Online (Sandbox Code Playgroud)


The*_*ser 5

根据我的经验,此错误可能会在几种不同的情况下触发(可能具有相同的根源,但被视为不同的情况)。

不仅仅是80端口

根据您的 nginx 配置,您还应该尝试端口 443:

  • sudo lsof -i:80
  • sudo lsof -i:443

你应该能够检查你的 nginx 监听端口/etc/nginx/sites-enabled(在 Debian 下)

特例

就我而言,有一个 nginx 实例正在运行,它会阻止自身重新启动。它不会随着 一起下降sudo systemctl stop nginx。我必须使用sudo killall nginx并且可以使用sudo systemctl start nginx

配置错误

我在配置错误上也遇到了完全相同的错误消息。

您可以使用/usr/sbin/nginx -c /etc/nginx/nginx.conf@ (this will also test all virtual host files (/etc/nginx/sites-enabled` 检查您的 nginx 配置)