重启后自动启动nginx

Rom*_*man 6 server cron nginx

我正在使用 crontab 在重新启动后启动一些服务。

这是我当前的 crontab:

@reboot root /etc/init.d/nginx reload
@reboot /usr/local/bin/forever start /var/www/rtc/index.js
Run Code Online (Sandbox Code Playgroud)

它适用于forever,但 nginx 永远不会启动。

我也试过:

@reboot /etc/init.d/nginx reload
@reboot sudo service nginx reload
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

我的 nginx conf 如下所示:

server {
        listen 443 ssl;
        server_name www.example.com;

        ssl_certificate /var/wwwssl/example.pem;
        ssl_certificate_key /var/wwwssl/example.key.pem;

        location / {
                proxy_pass https://www.example.com:8443;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
        }
}
Run Code Online (Sandbox Code Playgroud)

编辑:

此解决方案也不起作用

使用 systemd 插件来做到这一点:

[Service]
Restart=always
Run Code Online (Sandbox Code Playgroud)

您将其作为文件放置/etc/systemd/system/nginx.service.d/override.conf(如果目录不存在,则创建该目录)。您也可以使用systemctl edit nginx来创建文件。

编辑:

该服务已启用。

# systemctl is-enabled nginx
enabled
Run Code Online (Sandbox Code Playgroud)

我仍然不知道为什么 nginx 不启动。

每次shutdown -r(我用它来测试重新启动)之后,我检查一下sudo service --status-all,nginx 没有运行。

编辑

重启后,系统日志显示 nginx 的一些错误:

nginx: [emerg] host not found in upstream "www.example.com" in /etc/nginx/sites-enabled/default:100
nginx: configuration file /etc/nginx/nginx.conf test failed
nginx.service: Control process exited, code=exited, status=1/FAILURE
nginx.service: Failed with result 'exit-code'.
Failed to start A high performance web server and a reverse proxy server.
Run Code Online (Sandbox Code Playgroud)

编辑:

尝试添加解析器:

resolver IP valid=30s;
Run Code Online (Sandbox Code Playgroud)

还是一样的问题

编辑

可能是重启后nginx无法启动,因为启动顺序?Nginx 必须由 root 启动。node 应用程序由 nodeuser 使用 crontab 启动。

手动它的工作原理:

  1. 我重启服务器
  2. 重新启动后,节点应用程序正在运行(crontab 启动永久进程)
  3. Nginx 有错误
  4. 我从 nginx 开始 service nginx restart

我认为导致问题的原因是:

重新启动后,首先处理根进程。Nginx 尝试启动,但节点应用程序尚未启动,因此出现错误。但是我该如何解决呢?

我似乎顺序没有区别。我删除了永久启动,重新启动后出现相同的错误。

nginx -t:

在此处输入图片说明

Rom*_*man 2

该堆栈主题中也解释了该解决方案

我必须proxy_pass用 IP 替换 nginx 配置中的域:

proxy_pass https://<IP-OF-YOUR-SERVER>:8443;
Run Code Online (Sandbox Code Playgroud)