Intento implementar un proyecto Django con Nginx y Gunicorn con este tutorial . Hice todas las tareas pendientes, pero cuando creo /etc/nginx/sites-available/myproject con el siguiente código:
server { listen 80; server_name server_domain_or_IP; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /home/sammy/myproject; } location / { include proxy_params; proxy_pass http://unix:/home/sammy/myproject/myproject.sock; } } y luego ejecuto sudo nginx -t para encontrar errores, obtengo este error:
nginx: [emerg] open() "/etc/nginx/proxy_params" failed (2: No such file or directory) in /etc/nginx/sites-enabled/myproject:11 nginx: configuration file /etc/nginx/nginx.conf test failed¿Cómo puedo resolver el problema?
Obtiene la ruta incorrecta para proxy_params el 99% del tiempo (según mi experiencia), la ubicación predeterminada para el archivo proxy_params es /etc/nginx/proxy_params pero no parece ser lo mismo para usted.
El archivo proxy_params contiene lo siguiente:
proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; Estos parámetros se utilizan para reenviar información a la aplicación a la que está actuando como proxy. Trabajé con un antiguo servidor CentOS que no tenía un archivo proxy_params . En lugar de crear uno yo mismo, simplemente incluí estos parámetros directamente; y el bloque de ubicación se veía así:
location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://unix:/home/sammy/myproject/myproject.sock; }Eso depende de ti. Si el archivo existe en otra ubicación, simplemente inclúyalo en la ubicación correcta:
include /path/to/proxy_params
de lo contrario, puede incluir los parámetros directamente en el bloque de ubicación (como hice anteriormente)
O cree uno usted mismo y colóquelo en /etc/nginx (si desea seguir con su código actual)
Al instalar nginx en ubuntu, normalmente hay proxy_params y la ruta es /etc/nginx/proxy_params . Pero su ubuntu no lo tiene, por lo que hacer proxy_params o agregar el código que tiene proxy_params son buenas soluciones como respondió danidee .
Esta vez, hice el contenedor docker que tiene nginx y alpine que es una de las distribuciones de linux. Pero no tiene proxy_params igual que el old CentOS con el que trabajaba Danidee . Así que agregué el código de proxy_params , que es la forma más sencilla que hacer proxy_params .
Parece que algunas distribuciones de Linux o algunas distribuciones antiguas de Linux pueden no tener proxy_params .
Además, he visto el tutorial que usas antes. Para la configuración de nginx, es mejor que cree solo un myproject.conf en /etc/nginx/conf.d/myproject.conf (no olvide .conf después de myproject . Nginx no puede encontrar el archivo sin .conf ). En este caso, no necesita crear dos archivos en /etc/nginx/sites-available/myproject y /etc/nginx/sites-enabled/myproject .
En mi caso, tenía un archivo llamado myproject en el directorio /etc/nginx/sites-enabled . Pero no tenía ningún archivo llamado myproject en el directorio /etc/nginx/sites-available . Y no necesito ese archivo myproject en realidad, ya que no lo creé intencionalmente.
Así que eliminé el archivo myproject del directorio /etc/nginx/sites-enabled usando sudo rm myproject y listo. ¡Ahora sudo nginx -t fue exitoso!