Nginx: ruta raíz relativa al archivo conf


17

¿Es posible especificar la rootruta relativa al archivo conf que contiene?

Estamos desarrollando una aplicación web y mantenemos el app-nginx.confarchivo con la configuración específica de la aplicación en el directorio del proyecto. Quiero poder incluir este archivo en main nginx.confy tener una rootruta que haga referencia correctamente al subdirectorio del proyecto requerido. Ejemplo:

# /etc/nginx/nginx.conf
http {
    include /absolute/path/to/app/app-nginx.conf
}


# /absolute/path/to/app/app-nginx.conf
server {
    server_name localhost;
    listen 9090;

    root ./app;
}

Después de iniciar nginx con una configuración similar, nginx intenta resolver la ./appruta relativa al directorio de instalación de nginx ( /usr/local/Cellar/nginx/1.4.3/en mi caso), no al directorio de la aplicación.

Respuestas:


11

¿Es posible especificar la ruta raíz en relación con el archivo conf que contiene?

Respuesta corta: no.

Respuesta larga: Nginx, de manera predeterminada, solo conoce la ruta como --prefixy --conf-pathque se configuran en el momento de la compilación (ref: https://nginx.org/en/docs/configure.html ). Podemos encontrar varias rutas utilizadas por Nginx ejecutando el comando nginx -V(es "V" mayúscula). Entonces, --conf-pathes donde nginx.confreside el archivo principal y esa ruta se usa para cualquier ruta relativa.

Sin embargo, según la documentación oficial ( https://nginx.org/r/root ), una rootdirectiva puede contener otras variables.

¡Gracias por @cyker por aclarar después de 5 años de publicar la respuesta inicial!


Gracias Pothi. Lamentablemente, ninguna de las opciones funciona para mí. --prefixpuede afectar a otros servidores nginx y, desde mi perspectiva personal, un poco más difícil de administrar en comparación con el archivo de configuración. Y nginx no permite crear variables personalizadas con setdirectivas fuera del servercontexto, por lo que no puedo mover la ruta absoluta desde mi archivo app-nginx.conf.
Anton Moiseev

Entonces, esa ruta se usa para cualquier ruta relativa. Creo que esto es inexacto. Parece que nginx usará el directorio de configuración para las opciones includey ssl_certificate, por ejemplo, pero usará el directorio de prefijo para opciones como root. Parece que no tengo una lista completa sobre cuál usa cada opción.
Cyker

@Cyker Tienes razón. Se actualizó la respuesta ahora. Por supuesto, no está completo. Pero, mejor que la respuesta original (eso fue de hecho incorrecto / inexacto).
Pothi Kalimuthu

Estoy leyendo Nginx From Beginner to Pro, se observa que: "Ya has visto el uso de la directiva raíz dentro de un bloque de ubicación. La directiva raíz le dice a Nginx que devuelva /image/myimage.jpg en lugar de la ruta totalmente calificada / etc / nginx / html / app1 / image / myimage.jpg ". Entonces, en mi humilde opinión, ¿significa que la configuración de Nginx admite parches relativos?
Webwoman

Aquí, la pregunta es específica de la directiva "root" y si podría admitir la "ruta relativa al archivo conf".
Pothi Kalimuthu

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.