Teilen Sie die gleiche Virtualhost-Konfiguration auf mehrere Dateien auf

Teilen Sie die gleiche Virtualhost-Konfiguration auf mehrere Dateien auf

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 includeAnweisung 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

verwandte Informationen