【问题标题】:nginx sometimes is stoppingnginx有时会停止
【发布时间】:2018-10-30 08:42:11
【问题描述】:

我的虚拟机上的 nginx 正在停止,我无法找出原因。

sudo nginx -t -c /etc/nginx/nginx.conf

返回

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

还有一些日志:

sudo 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 Sun 2018-05-20 12:26:38 UTC; 2h 34min ago
  Process: 25083 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
  Process: 25126 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)
  Process: 25123 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 6426 (code=exited, status=0/SUCCESS)

May 20 12:26:37 sl-code nginx[25126]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
May 20 12:26:37 sl-code nginx[25126]: nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
May 20 12:26:38 sl-code nginx[25126]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
May 20 12:26:38 sl-code nginx[25126]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
May 20 12:26:38 sl-code nginx[25126]: nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
May 20 12:26:38 sl-code nginx[25126]: nginx: [emerg] still could not bind()
May 20 12:26:38 sl-code systemd[1]: nginx.service: Control process exited, code=exited status=1
May 20 12:26:38 sl-code systemd[1]: Failed to start A high performance web server and a reverse proxy server.
May 20 12:26:38 sl-code systemd[1]: nginx.service: Unit entered failed state.
May 20 12:26:38 sl-code systemd[1]: nginx.service: Failed with result 'exit-code'.

错误日志: sudo nano /var/log/nginx/error.log

2020/04/17 03:58:54 [notice] 18191#18191: signal process started
2020/04/17 03:58:54 [error] 18191#18191: invalid PID number "" in "/run/nginx.pid"
2020/04/17 03:58:59 [notice] 18195#18195: signal process started
2020/04/17 03:59:05 [emerg] 18238#18238: bind() to 0.0.0.0:80 failed (98: Address already in use)
2020/04/17 03:59:05 [emerg] 18238#18238: bind() to [::]:80 failed (98: Address already in use)
2020/04/17 03:59:05 [emerg] 18238#18238: bind() to 0.0.0.0:443 failed (98: Address already in use)
2020/04/17 03:59:05 [emerg] 18238#18238: bind() to 0.0.0.0:80 failed (98: Address already in use)
2020/04/17 03:59:05 [emerg] 18238#18238: bind() to [::]:80 failed (98: Address already in use)
2020/04/17 03:59:05 [emerg] 18238#18238: bind() to 0.0.0.0:443 failed (98: Address already in use)

【问题讨论】:

  • 在 80 和 443 端口上似乎存在一些竞争。虚拟机或虚拟机主机(您的电脑)中是否有任何其他 Web 服务器?也可以在您的主机(不是虚拟机)上使用 Skype,因为它默认使用端口 80(您可以更改它),以防您还将虚拟机端口映射到您的主机端口。
  • 问题仍然存在。这是一个 digitalocean droplet,我没有在上面安装任何其他 Web 服务器。
  • 试图检查谁在使用端口 80 和 443,结果为空。看起来某个作业进程正在杀死 nginx 进程

标签: nginx debian ubuntu-16.04 ubuntu-server


【解决方案1】:

似乎您正在运行另一个网络服务器。尝试停止所有其他网络服务器进程并重新启动 nginx

【讨论】:

    【解决方案2】:

    看起来您有另一个程序绑定到端口 80 和 443。由于您在 ubuntu 上运行 sudo lsof -i 应该可以帮助您弄清楚它是什么。

    【讨论】:

      【解决方案3】:

      解决方案 1:

      这可能是因为其他一些服务正在使用相同的端口(80 和 443)。

      要识别它使用

      sudo lsof -i
      

      为了过滤上面代码的结果,使用端口 80 和 443

      sudo lsof -i :80 | grep LISTEN
      
      sudo lsof -i :443 | grep LISTEN
      

      找出哪些服务正在使用您的端口 80 和 443。

      解决方案 2:

      检查您是否安装了其他网络服务器,例如apache

      如果已安装请删除并重启nginx 使用

      sudo service nginx restart
      

      解决方案 3:

      检查nginx 是否正在使用大量内存。

      如果正在使用系统无法处理的RAM,操作系统将停止服务

      【讨论】:

      • user@machine:~$ sudo lsof -i :80 | grep LISTEN nginx 21374 root 6u IPv4 442296 0t0 TCP *:http (LISTEN) nginx 21374 root 7u IPv6 442297 0t0 TCP *:http (LISTEN) nginx 21375 www-data 6u IPv4 442296 0t0 TCP *:http (LISTEN) nginx 21375 www-数据 7u IPv6 442297 0t0 TCP *:http (LISTEN)
      • 你在nginx停止后尝试过吗?
      • 是的。刚刚又停了下来。试图运行 sudo lsof -i :80 | grep LISTEN 没有结果
      • 还尝试添加更多 RAM,但没有效果。顺便说一句,没有安装其他服务器的apache。
      • 有时如果 nginx 运行任何脚本,如无限循环,程序将使用大量 RAM。所以系统会停止服务。你检查过这样的脚本吗?
      【解决方案4】:

      您可能有另一个 Web 服务与正在发生冲突的 Nginx 一起运行。您可以通过运行 sudo lsof -i 来检查它。

      【讨论】:

        【解决方案5】:

        您的sites-enabled 中的配置文件似乎有误。您必须手动找到该文件并删除该文件,然后

        sudo service Nginx restart
        

        我希望这对你有用

        【讨论】:

          猜你喜欢
          • 2017-01-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-13
          • 2014-03-07
          • 2013-05-04
          • 2020-04-24
          • 1970-01-01
          相关资源
          最近更新 更多