`/etc/init.d/nginx start`和`nginx`之间的不同行为

我从这里获得了/etc/init.d/nginx初始化脚本: https : //www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/

在我的/etc/nginx/nginx.confinclude /etc/nginx/conf.d/*.conf; 其中包括我的网站的configuration文件。

但是,在/etc/init.d/nginx start ,似乎nginx并没有加载这些configuration文件,并且在访问时返回502。

另一方面,用命令nginx启动nginx工作得很好。

这里有什么问题?

  • nginx没有正确的提供子域名
  • 在SSL终止负载均衡器后面,如何设置nginxredirect到某个主机的https
  • 在Nginx中,根据X头值阻止用户
  • 不能用Nginx安装乘客
  • nginxauthentication和自定义错误页面
  • X-Real-IP头在负载平衡器后面用nginx填满
  • 3 Solutions collect form web for “`/etc/init.d/nginx start`和`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机制有关。

    服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器.