簡體   English   中英

Nginx:無法啟動高性能web服務器和反向代理服務器

[英]Nginx: Failed to start A high performance web server and a reverse proxy server

我嘗試啟動此服務,但我不能,出現以下錯誤:

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'.

我想知道為什么沒有人提到禁用apache2

sudo service apache2 stop

您已經有一個綁定到HTTP 端口 80的進程。

您可以運行命令sudo lsof -i:80以獲取使用該端口的進程列表,然后停止/禁用Web 服務器。

嘗試停止使用端口 80 的進程: sudo fuser -k 80/tcp

對我來說,此錯誤是由端口 80 上的default nginx 站點引起的。刪除默認站點有效

sudo rm /etc/nginx/sites-enabled/default
sudo service nginx restart

您已經有一個綁定到 HTTP 端口 80 的進程。您可以運行命令sudo lsof -i:80以獲取使用該端口的進程列表,然后停止/禁用 Web 服務器。

嘗試停止使用端口 80 的進程:

sudo fuser -k 80/tcp

可能是配置文件有問題。 您可以使用此nginx -t -c /etc/nginx/nginx.conf命令來查找配置文件中的任何錯誤。 如果您發現錯誤已解決,則再次運行sudo service nginx restart 它會起作用。

請檢查這里的參考

嘗試停止使用端口 80 的進程:

sudo fuser -k 80/tcp

當你重新啟動使用

sudo systemctl restart nginx

根據我的經驗,此錯誤可能會在多種不同情況下觸發(可能具有相同的根,但被視為不同的情況)。

不僅是80端口

根據您的 nginx 配置,您還應該嘗試端口 443:

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

您應該能夠在/etc/nginx/sites-enabled (在 Debian 下)中檢查您的 nginx 監聽端口

特例

就我而言,有一個 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 (檢查您的 nginx 配置/usr/sbin/nginx -c /etc/nginx/nginx.conf@ (this will also test all virtual host files ( /etc/nginx/sites-enabled`)

我有同樣的問題,是因為我在同一台服務器上有 apache 和 nginx! 所以當我輸入 sudo reboot 時它不起作用,因為它在使用 nginx 時啟動了 apache,所以我只運行這兩個命令

sudo systemctl 停止 apache2 然后 sudo systemctl 啟動 nginx

然后 sudo systemctl 禁用 apache2 所以下次我重新啟動時不會遇到同樣的問題

aws 服務支持的幫助

我不得不使用:

sudo killall nginx 

然后可以使用;

sudo systemctl start nginx

對我來說,停止 apache 服務解決了問題sudo service apache2 stop

我也有這個問題。 我檢查了/etc/nginx/site-available/default文件,但忘記關閉括號(語法錯誤)。

我在 nginx 中使用 gunicorn,發現服務未激活。

sudo systemctl enable gunicorn.socket
sudo systemctl start gunicorn.socket
sudo systemctl restart nginx

為我工作。

如果您的 gunicorn 處於活動狀態,請確保它工作正常。

您還可以通過nginx logs查看錯誤的 RCA

sudo tail -f /var/log/nginx/error.log

J AI EU LE MEME 問題 MAIS ESSAYER D'UTILISER : SUDO SYSTEMECTL 停止 NGINX SUDO SYSTEMECTL START NGINX AU LIEU DE : SUDO SYSTEMCTL 重新加載 NGINX

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM