У меня есть несколько приложений django на моем сервере, каждое из которых запускается на своих виртуальных хостах, привязанных к разным портам. (Я делаю это, чтобы изолировать каждую группу WSGIProcessGroup).
Теперь для простоты я хотел бы проксировать каждое приложение на порт 80.
Для одного приложения я делаю примерно так:
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>
Теперь, для простоты включения или отключения некоторых приложений, когда у меня работает другое приложение, у меня есть другой файл .conf, содержащий это:
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>
Но в эту секунду <VirtualHost *:80>
не используется, что кажется нормальным с учетом синтаксиса конфигурации apache.
тем не мение, Я бы хотел, чтобы этот фрагмент конфигурации располагался рядом с объявлением приложения, чтобы я мог иметь вещи, которые принадлежат друг другу, в одном файле.
Могу ли я что-нибудь сделать в этом отношении? Я как-то думал об использовании директивы include, но у меня очень мало знаний о конфигурации apache, и я не думаю, что смогу найти решение самостоятельно :)
Что вы думаете?
Ура
В include
Директива позволит вам структурировать конфигурацию вашего прокси следующим образом:
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