Resolución de problemas básicos de Nginx
Este artículo muestra algunas soluciones básicas para Nginx, uno de los servidores HTTP más populares. El propósito es corregir algunos de los errores más comunes que pueden estar presentes en su configuración de Nginx.
Buscar errores de sintaxis o advertencias en la configuración
Mediante un simple comando puedes verificar el estado del archivo de configuración de Nginx:$ sudo systemctl config nginx
La salida mostrará si el archivo de configuración es correcto o, si no lo es, mostrará el archivo y la línea donde está el problema.
$ sudo systemctl config nginx
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo systemctl config nginx
"worker_connections" directive is not allowed here in /etc/nginx/nginx.conf:12
nginx: configuration file /etc/nginx/nginx.conf test failed
En caso de que no tenga el comando de servicio disponible en su sistema, puede optar por usar el -t
Parámetro Nginx, que también prueba la sintaxis correcta del archivo de configuración y luego intenta abrir los archivos a los que se hace referencia en la configuración.$ sudo nginx -t
Compruebe que Nginx se está ejecutando
Para verificar el estado del servicio Nginx, puede usar el siguiente comando:$ sudo systemctl status nginx
También puede usar los comandos genéricos para validar el estado del servicio:$ sudo /etc/init.d/nginx status
Verificar que los puertos estén abiertos y el servicio esté escuchando
Verifique que los puertos necesarios estén abiertos y para verificar que el servicio Nginx está escuchando a través de ellos, puede usar lsof
comando, idealmente en los puertos predeterminados 80 y 443.
$ sudo lsof -i :80 -s TCP:LISTEN
nginx 1305 nginx 6u IPv4 1613873 0t0 TCP *:http (LISTEN)
nginx 1305 nginx 7u IPv6 1613874 0t0 TCP *:http (LISTEN)
nginx 1306 nginx 6u IPv4 1613873 0t0 TCP *:http (LISTEN)
nginx 1306 nginx 7u IPv6 1613874 0t0 TCP *:http (LISTEN)
Comprobar si Nginx procesa solicitudes
Si Nginx realmente está escuchando los puertos apropiados, el siguiente paso es verificar si está procesando solicitudes, lo que se puede hacer usando el curl
herramienta usando la IP, URL o localhost si su configuración escucha en localhost:
$ curl -i http://127.0.0.1/nginx_status
HTTP/1.1 200 OK
Server: nginx/1.11.1
Date: Wed, 08 Aug 2021 11:36:43 GMT
Content-Type: text/plain
Content-Length: 97
Connection: keep-alive
Active connections: 1
server accepts handled requests
3 3 3
Reading: 0 Writing: 1 Waiting: 0
Verificar los registros
Verifique los últimos registros del servicio Nginx.$ sudo tail -f /var/log/nginx/access.log /var/log/nginx/error.log
Verificar permisos
Asegúrese de que Nginx tenga los permisos adecuados para acceder a los archivos necesarios.
$ namei -om /usr/share/nginx/html/index.html
f: /usr/share/nginx/html/index.html
drwxr-xr-x root root /
drwxr-xr-x root root usr
drwxr-xr-x root root share
drwxr-xr-x root root nginx
drwxr-xr-x root root html
-rw-r--r-- root root index.html
Recargar el servicio
En caso de que haya realizado cambios en el archivo de configuración que no se hayan aplicado, puede volver a cargar el servicio, iniciar nuevos procesos de Nginx y apagar suavemente los trabajadores antiguos para evitar un cierre rápido y agresivo.$ sudo service nginx reload
Para un apagado rápido que no espere a que finalicen los procesos, puede reiniciar Nginx.$ sudo service nginx restart
Habilitar el modo de depuración
En el archivo de configuración (normalmente /etc/nginx/nginx.conf
) cambiar el nivel de registro para el error_log
directiva:
server {
# stuff
error_log /var/logs/nginx/error.log debug;
# stuff
}
Puede depurar reglas de reescritura para ver los resultados del procesamiento en el registro de errores:
server {
# stuff
error_log /var/logs/nginx/error.log notice;
rewrite_log on;
# stuff
}
Verificar la resolución DNS
Reglas en /etc/hosts
tienen prioridad sobre las resoluciones DNS. Puede verificar los registros DNS con:$ host -t A website.com
También puede comprobar la resolución DNS completa:$ dig +trace website.com
Conclusiones
Estos son algunos pasos básicos de solución de problemas para algunos de los errores más comunes con Nginx. También puede confiar en la documentación si estos pasos no solucionan su problema, aprovechando la gran popularidad de Nginx.