我的服务器上有多个 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