comportamento diferente entre '/etc/init.d/nginx start' e 'nginx'

2

Eu tenho meu script /etc/init.d/nginx init aqui: link

no meu /etc/nginx/nginx.conf , há include /etc/nginx/conf.d/*.conf; , que inclui os arquivos de configuração do meu site.

no entanto, depois de /etc/init.d/nginx start , parece que o nginx não está carregando esses arquivos de configuração e retorna 502 no acesso.

por outro lado, inicie o nginx com o comando nginx funciona bem.

o que há de errado aqui?

    
por wong2 20.07.2017 / 18:34

3 respostas

2

Parece o seu problema com o arquivo init errado. Normalmente nginx instala a partir do RPM e nenhum arquivo adicional é necessário. Em seu link metioned, que o arquivo init testou no CentOS 5, mas você está usando o CentOS 6, onde ele não foi testado. Tente remover este arquivo init e reinstalar o nginx do RPM ou repositório, ele deve instalar um bom arquivo init.

Se você não quiser fazer isso, tente copiar o arquivo init de . É cópia do arquivo init do instalado no nginx do CentOS 6.

    
por 26.07.2017 / 15:09
0

Você está usando scripts sysvinit, mas a Red Hat (assumindo que você usa Red Hat / CentOS a partir do link) passou para o systemd.

Criar

/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

Depois disso,

systemctl enable nginx.service && systemctl start nginx.service

Então não se preocupe, pois agora ele será iniciado na inicialização. Mas certifique-se de ter matado a instância do nginx que você iniciou manualmente antes.

    
por 20.07.2017 / 19:29
0

Como o CentOS 6 não fornece pacotes nginx próprios, é importante entender de onde vem o seu pacote. Uma saída de nginx -V daria detalhes essenciais.

Meu palpite de que os erros HTTP 502 indicam a incapacidade do processo nginx de se comunicar com um servidor de aplicativos. Nginx error_log conteria detalhes sobre essa condição. Executar o setenforce 0 antes do reinício do nginx do serviço ajudaria a entender se um problema está relacionado ao mecanismo do SELinux.

    
por 26.07.2017 / 14:50

Tags