我从这里获得了/etc/init.d/nginx
初始化脚本: https : //www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/
在我的/etc/nginx/nginx.conf
有include /etc/nginx/conf.d/*.conf;
其中包括我的网站的configuration文件。
但是,在/etc/init.d/nginx start
,似乎nginx并没有加载这些configuration文件,并且在访问时返回502。
另一方面,用命令nginx
启动nginx
工作得很好。
这里有什么问题?
看起来像你的问题与错误的init文件。 通常nginx
从RPM安装,不需要额外的文件。 在你的链接提到,它的init文件在CentOS 5testing,但你使用CentOS 6,未经testing。 尝试删除这个init文件,并从RPM或repo重新安装nginx,它应该安装好一个init文件。
如果你不想这样做,你可以尝试从那里复制init文件。 它是安装在CentOS 6 nginx上的init文件的副本。
你正在使用sysvinit脚本,但是Red Hat(假设你从链接中使用Red Hat / CentOS)已经进入了systemd。
创build
/lib/systemd/system/nginx.service
[Unit] Description=The NGINX HTTP and reverse proxy server After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
一旦被照顾,
systemctl enable nginx.service && systemctl start nginx.service
那么不要担心,因为它现在将在启动时启动。 但是确保你已经杀死了你之前手动启动的nginx实例。
由于CentOS 6不提供自己的nginx软件包,所以了解你的软件包来自哪里是很重要的。 nginx -V
的输出将提供基本的细节。
我猜测HTTP 502错误表明nginx进程无法与应用程序服务器进行通信。 Nginx的error_log将包含这个条件的细节。 在服务nginx重新启动之前运行setenforce 0
将有助于了解一个问题是否与SELinux机制有关。