У меня на сервере есть несколько приложений 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, и я не думаю, что смогу найти решение самостоятельно :)
Что вы думаете?
Ваше здоровье
решение1
Директива 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