O Nginx está me dando um erro 500 que está me deixando louco. Em primeiro lugar, tenho um personalsite.conf
arquivo dentro de /etc/nginx/conf.d/
onde tenho meu bloco de servidor.
Esta é minha configuração de bloco de servidor:
server { listen 80; server_name personalsite.me; charset UTF-8; access_log /var/log/nginx/personalsite.access.log main; error_log /var/log/nginx/personalsite.error.log; root /usr/share/nginx/html/personalsite; index index.php index.html index.htm; error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html/; } location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
Além disso, o usuário nginx tem suas permissões adequadas atribuídas em /usr/share/nginx/html/personalsite/
.
Acontece que o Nginx está me dando um erro 500 quando tento navegar personalsite.me
, e o engraçado é que eu sei disso porque verifiquei personalsite.access.log
e vi, porque o navegador simplesmente fica em branco. Por razões desconhecidas O Nginx não pode me mostrar sua página de erro 500, devidamente declarada no bloco do servidor, como você pode ver.
Outra coisa estranha é que personalsite.error.log
está em branco, ele não registra nada.
Além disso, tenho esse domínio declarado com seu IP em meu /etc/hosts
arquivo. Portanto, realmente não tenho ideia do que está acontecendo aqui.
Tudo é r unning CentOS 7 em um Digital Ocean VPS.
Resposta
A maioria dos erros ocorre devido à configuração incorreta durante a configuração do Nigix. Vou sugerir que verifique o arquivo (/etc/php-fpm.d/www.conf
).
vi /etc/php-fpm.d/www.conf
Encontre a linha que especifica o parâmetro de escuta e altere-o para que se pareça com o seguinte:
listen = /var/run/php-fpm/php-fpm.sock
Em seguida, encontre as linhas que definem listen.owner
e listen.group
e descomente-os. Eles devem ter a seguinte aparência:
listen.owner = nobody listen.group = nobody
Por último, encontre as linhas que definem o usuário e o grupo e altere seus valores de “apache” para “nginx”:
user = nginx group = nginx
Em seguida, salve e saia
/etc/init.d php-fpm restart
Resposta
Não é a melhor resposta do mundo, mas um erro 500 é muito ambíguo, pode ser a configuração do nginx ou pode estar relacionado ao conteúdo do seu site. Minimize sua configuração e reconstrua até que você possa reproduzir o problema.
Substitua o conteúdo do site por um index.html simples com apenas algum texto simples nele. Deixe de fora todas as diretivas de erro extras e o bloco de localização. Depois de estabelecer a funcionalidade básica, você pode se sentir menos insano e adicionar suas outras diretivas, testando conforme você avança, até isolar qualquer diretiva que esteja causando problemas e encontrar a causa raiz a partir daí.
Comentários
Resposta
Quando o PHP display_errors está desabilitado, os erros do PHP podem retornar o erro Nginx 500.
Você deve dar uma olhada em seus logs do php-fpm, tenho certeza que encontrará o erro lá. Com CentOS 7:
tail -f /var/log/php-fpm/www-error.log
Você também pode mostrar erros de PHP. Em /etc/php.ini, altere:
display_errors = Off
para:
display_errors = On
phpinfo.php
e ele funciona perfeitamente. O site que ' estou tentando executar usa o Yii Framework. Verifiquei o wiki oficial e ele diz: " O software é nginx, php-fpm (php5-fpm). Para desempenho, ' é recomendado executar o php-fpm no modo SOCKET, ao invés de acessar via IP: PORT. Esse é o método mostrado abaixo " I ' estou usando Nginx exatamente assim. Portanto, não tenho ideia de por que isso me dá um erro 500 e não escrevo no error.log.