重新启动 NGINX 失败



我在Ubuntu 16.04上安装了NGINX并编辑了我的配置。当我想用sudo service nginx restart重新启动时,出现错误:

nginx.service 的作业失败,因为控制进程退出 错误代码。请参阅"systemctl status nginx.service"和"journalctl -xe" 了解详情。

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 Mon 2017-01-02 16:07:54 UTC; 15s ago
  Process: 26515 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)
  Process: 26510 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 3464 (code=exited, status=0/SUCCESS)
Jan 02 16:07:53 IF-STG-001 nginx[26515]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
Jan 02 16:07:53 IF-STG-001 nginx[26515]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 
Jan 02 16:07:53 IF-STG-001 nginx[26515]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
Jan 02 16:07:54 IF-STG-001 nginx[26515]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Jan 02 16:07:54 IF-STG-001 nginx[26515]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
Jan 02 16:07:54 IF-STG-001 nginx[26515]: nginx: [emerg] still could not bind()
Jan 02 16:07:54 IF-STG-001 systemd[1]: nginx.service: Control process exited, code=exited status=1
Jan 02 16:07:54 IF-STG-001 systemd[1]: Failed to start A high performance web server and a reverse proxy server.
Jan 02 16:07:54 IF-STG-001 systemd[1]: nginx.service: Unit entered failed state.
Jan 02 16:07:54 IF-STG-001 systemd[1]: nginx.service: Failed with result 'exit-code'.

为什么我无法重启我的 nginx 实例?我不明白为什么它会阻止重新启动

错误消息的重要部分是

绑定() 到 0.0.0.0:80 失败(98:地址已在使用中)

因此,在启动时,nginx无法绑定到端口80,因为其他一些程序已经绑定到该端口。只有当其他程序退出或从此套接字解绑时,您才能启动nginx。

要查找当前绑定此端口的程序,您可以以 root 身份运行以下命令(例如使用 sudo):

ss -ntlp "sport = :80"

当您与 apache 在同一台机器上运行 apache 服务器并且 nginx 需要相同的端口来运行(即 80)时,通常会出现此问题。尝试将nginx端口更改为8080或其他端口。即{listen 8080 default_server;listen [::]:8080 default_server;}并重新启动 nginx

最新更新