Ich habe mehrere Ruby-Apps, die auf demselben Host ausgeführt werden:
~/app1
~/app2
~/app3
Und ich möchte Nginx Proxy diese Apps mit Unterverzeichnissen wie:
http://example.com/app1
http://example.com/app2
http://example.com/app3
Ich bin neugierig, ob Nginx mich dabei unterstützt, diese Speicherorte in mehreren Dateien zu definieren, damit ich jede Konfiguration mit der App behalten kann, anstatt eine einzige monolithische Konfigurationsdatei für alle Apps zu haben:
~/app1/nginx.conf
~/app2/nginx.conf
~/app3/nginx.conf
Mein naiver Versuch, den Server mit einer einzigen Location-Direktive in jeder der 3 Konfigurationsdateien zu definieren, führte zu conflicting server name "example.com" on [::]:80, ignored
einer Konfiguration, die so aussieht:
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;
}
}
Gibt es eine Möglichkeit, die Konfigurationen auf diese Weise zu organisieren?
"location" directive is not allowed here
.include /etc/nginx/above_server.d/*
undinclude /etc/nginx/in_server.d/*
Ich glaube, Sie könnten diese Konfiguration verwenden:
und konfigurieren Sie dann im Verzeichnis jeder Anwendung die Umleitung wie folgt:
quelle
server
Blocks definieren können, aber ich denke, dass der Anwendungsfall des OP durch diese Antwort gut unterstützt wird.