Tengo varias aplicaciones de ruby ejecutándose en el mismo host:
~/app1
~/app2
~/app3
Y quiero tener proxy nginx estas aplicaciones usando subdirectorios como:
http://example.com/app1
http://example.com/app2
http://example.com/app3
Tengo curiosidad por saber si nginx me permite definir estas ubicaciones en varios archivos, de modo que pueda mantener cada configuración con la aplicación, en lugar de tener un archivo de configuración monolítico para todas las aplicaciones:
~/app1/nginx.conf
~/app2/nginx.conf
~/app3/nginx.conf
Mi ingenuo intento de definir el servidor con una sola directiva de ubicación en cada uno de los 3 archivos de configuración condujo a conflicting server name "example.com" on [::]:80, ignored
una configuración similar a esta:
upstream app1 { server 127.0.0.1:4567; }
server {
listen [::]:80;
listen 80;
servername example.com
location /app1 {
proxy_pass http://app1;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Request-Start $msec;
}
}
¿Hay alguna manera de organizar las configuraciones de esta manera?
"location" directive is not allowed here
.include /etc/nginx/above_server.d/*
yinclude /etc/nginx/in_server.d/*
Creo que podría usar esta configuración:
y luego, en el directorio de cada aplicación, configure la redirección de esta manera:
fuente
server
bloque, pero creo que el caso de uso del OP está bien servido por esta respuesta.