【发布时间】:2021-11-13 18:21:18
【问题描述】:
我有一个服务器,我在其中托管多个应用程序。它们都可以通过相同的服务器名称在自己的子目录中访问,因此我的应用程序 foo 位于 www.servername.com/foo 和 bar 位于 www.servername.com/bar 等等。这些应用大多是 Flask 应用,通过 apache VirtualHost *:443 配置路由和静态文件以运行 SSL。
我获得了另一个 Flask 应用程序baz,它可以在服务器上运行,该服务器已配置为启动两个 Docker 容器,一个用于应用程序,一个用于数据库。我已经设法调整我的 apache .conf 文件如下:
<VirtualHost *:443>
ServerName www.servername.com
# some additional config for my other apps, in Directories and static aliases
ProxyPreserveHost On
SSLProxyEngine On
<Proxy *>
Allow from *
</Proxy>
ProxyPass "/baz" "http://<IP address>:5000"
ProxyPassReverse "/baz" "http://<IP address>:5000"
</VirtualHost>
我认为配置正在到达正在运行的容器,因为当我转到 www.servername.com/baz 时,它会重定向到 www.servername.com/login。它应该重定向到www.servername.com/baz/login,但很明显有些地方不太对劲。 如何让代理正确引导所有baz 流量通过/baz 子目录?
此外,我可以手动导航到www.servername.com/baz/login 以查看baz 应用程序的登录页面,但它似乎没有加载CSS,所以我假设没有加载静态文件。 我是否也需要为这些静态文件设置别名,就像我对其他非 Docker Flask 应用所做的那样?如果需要,我通常使用的标准格式:
Alias baz/static /path/to/baz/static
不工作。一时兴起,我还尝试了一些更奇怪的东西,看看它是否可行:
Alias "baz/static" "http://<IP address>:5000/static"
但这也不起作用。也许可以通过解决上面的代理路由问题来解决,但是我怎样才能使baz 应用程序可以访问静态文件?
【问题讨论】: