He reconfigurado nginx pero no puedo reiniciarlo usando la siguiente configuración:
conf:
server {
listen 80;
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location /robots.txt {
alias /path/to/robots.txt;
access_log off;
log_not_found off;
}
location = /favicon.ico { access_log off; log_not_found off; }
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_read_timeout 30;
proxy_pass http://127.0.0.1:8000;
}
location /static {
expires 1M;
alias /path/to/staticfiles;
}
}
después de ejecutar sudo nginx -c conf -t
para probar la configuración, se devuelve el siguiente error, no puedo entender cuál es realmente el problema
nginx: [emerg] "server" directive is not allowed here in /etc/nginx/sites-available/config:1
nginx: configuration file /etc/nginx/sites-available/config test failed
Ejemplo nginx.conf válido para proxy inverso; En caso de que alguien esté atrapado como yo
y también puedes servirlo en Docker
fuente
La ruta al
nginx.conf
archivo que es el archivo de configuración principal para Nginx, que también es el archivo que INCLUIRÁ la ruta para otros archivos de configuración de Nginx cuando sea necesario/etc/nginx/nginx.conf
.Puede acceder y editar este archivo escribiendo esto en la terminal
cd /etc/nginx
/etc/nginx$ sudo nano nginx.conf
Además, en este archivo puede incluir otros archivos, que pueden tener una directiva SERVER como un BLOQUE DE SERVIDOR independiente, que no necesitan estar dentro de los bloques HTTP o HTTPS, como se aclara en la respuesta aceptada anterior.
Repito: si necesita que se defina un BLOQUE DE SERVIDOR dentro del archivo de configuración PRIMARIO en sí, ese BLOQUE DE SERVIDOR deberá definirse dentro de un bloque HTTP o HTTPS adjunto en el
/etc/nginx/nginx.conf
archivo que es el archivo de configuración principal para Nginx.También tenga en cuenta que está bien si define un BLOQUE DE SERVIDOR directamente que no lo encierra dentro de un bloque HTTP o HTTPS, en un archivo ubicado en la ruta
/etc/nginx/conf.d
. Además, para que esto funcione, deberá incluir la ruta de este archivo en el archivo de configuración PRIMARY como se muestra a continuación:Además de esto, puede comentar desde el archivo de configuración PRIMARY, la línea
y no es necesario mantener ningún archivo de configuración
/etc/nginx/sites-available/
y tampoco es necesario vincularlos SIMBÓLICOS/etc/nginx/sites-enabled/
, tenga en cuenta que esto funciona para mí, en caso de que alguien piense que no es así para ellos o que este tipo de configuración es ilegal, etc., etc., por favor deje un comentario para que puedo corregirme - gracias.EDITAR: - De acuerdo con la última versión del Libro de cocina oficial de Nginx, no necesitamos crear ninguna configuración interna
/etc/nginx/sites-enabled/
, esta era la práctica anterior y ahora está DESPRECIADA.Por lo tanto, no es necesaria la DIRECTIVA INCLUIR
include /etc/nginx/sites-available/some_file.conf;
.Cita de la página de Nginx CookBook - 5.
fuente
Puede haber un error tipográfico en cualquier lugar dentro de un archivo importado por la configuración. Por ejemplo, hice un error tipográfico en el fondo de mi archivo de configuración:
(ubicación en lugar de ubicación), y esto provoca el error:
fuente