Ich habe mehrere Django-Anwendungen auf meinem Server, die jeweils auf ihren eigenen virtuellen Hosts ausgeführt werden, die an unterschiedliche Ports gebunden sind. (Ich mache das, um jede WSGIProcessGroup zu isolieren.)
Der Einfachheit halber möchte ich nun jede Anwendung per Proxy auf Port 80 weiterleiten.
Für eine Anwendung mache ich so etwas:
Listen 8101
<VirtualHost 127.0.0.1:8101>
WSGIProcessGroup app1
WSGIDaemonProcess app1 display-name=%{GROUP}
WSGIScriptAlias /app1 "/var/django_apps/app1/app1.wsgi"
</VirtualHost>
<VirtualHost *:80>
ProxyPass /app1 http://localhost:8101/app1
ProxyPassReverse /app1 http://localhost:8101/app1
</VirtualHost>
Der Einfachheit halber kann ich einige Anwendungen einfacher aktivieren oder deaktivieren, wenn ich eine andere App ausführe. Dazu habe ich eine weitere .conf-Datei mit folgendem Inhalt:
Listen 8102
<VirtualHost 127.0.0.1:8102>
WSGIProcessGroup app2
WSGIDaemonProcess app2 display-name=%{GROUP}
WSGIScriptAlias /app2 "/var/django_apps/app2/app2.wsgi"
</VirtualHost>
<VirtualHost *:80>
ProxyPass /app2 http://localhost:8102/app2
ProxyPassReverse /app2 http://localhost:8102/app2
</VirtualHost>
Diese Sekunde <VirtualHost *:80>
wird jedoch nicht verwendet, was angesichts der Apache-Konfigurationssyntax normal erscheint.
Jedoch, ich möchte, dass dieser Teil der Konfiguration direkt neben der Anwendungsdeklaration liegt, damit ich Dinge, die zusammengehören, in nur einer Datei haben kann.
Gibt es etwas, was ich diesbezüglich tun könnte? Ich habe darüber nachgedacht, irgendwie eine Include-Direktive zu verwenden, aber ich habe sehr wenig Ahnung von der Apache-Konfiguration und ich glaube nicht, dass ich alleine eine Lösung finden kann :)
Was denken Sie?
Prost
Antwort1
Mit dieser include
Anweisung können Sie Ihre Proxy-Konfiguration folgendermaßen strukturieren:
Proxy.conf:
<VirtualHost *:80>
Include app1_proxy.conf
Include app2_proxy.conf
</VirtualHost>
app1_proxy.conf:
ProxyPass /app1 http://localhost:8101/app1
ProxyPassReverse /app1 http://localhost:8101/app1
app2_proxy.conf:
ProxyPass /app2 http://localhost:8102/app2
ProxyPassReverse /app2 http://localhost:8102/app2