我正在使用 crontab 重新启动后启动一些服务。
这是我当前的 crontab:
@reboot root /etc/init.d/nginx reload
@reboot /usr/local/bin/forever start /var/www/rtc/index.js
它适用于forever
,但 nginx 永远不会启动。
我也试过:
@reboot /etc/init.d/nginx reload
@reboot sudo service nginx reload
有任何想法吗?
我的 nginx 配置文件如下所示:
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;
}
}
编辑:
该解决方案也不起作用
使用 systemd 插件来做到这一点:
[Service]
Restart=always
您将其作为文件放置/etc/systemd/system/nginx.service.d/override.conf
(如果目录不存在,则创建目录)。您也可以使用systemctl edit nginx
来创建文件。
编辑:
服务已启用。
# systemctl is-enabled nginx
enabled
我仍然不知道为什么 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.
编辑:
尝试添加解析器:
resolver IP valid=30s;
还是同样的问题
编辑
可能是重启后nginx无法启动,因为启动顺序?Nginx 必须由 root 启动。节点应用程序由 nodeuser 使用 crontab 启动。
手动它工作:
- 我重新启动服务器
- 重新启动后,节点应用程序正在运行(crontab 启动永久进程)
- Nginx 有错误
- 我开始 nginx
service nginx restart
我认为导致问题的原因是:
重新启动后,首先处理根进程。Nginx 尝试启动,但节点应用程序还没有启动,所以它出错了。但是我该如何解决呢?
我似乎顺序没有区别。我删除了永远启动,重新启动后出现相同的错误。
nginx -t:
罗马:
您可以尝试使用此命令将指向 init 的链接设置为 SysV 吗?
为什么要设置 nginx 默认值?
该堆栈主题中也解释了该解决方案
我不得不
proxy_pass
用 IP 替换 nginx 配置中的域: