【发布时间】:2020-01-17 04:12:55
【问题描述】:
找不到具有此特定设置的问题,因此无法使其他一些答案在我的情况下起作用。
我有一个 CentOS 服务器运行一个基于 PHP 的网站,Apache 作为 Web 服务器(工作正常)。我现在正在尝试在不同的端口上部署基于 Flask 的应用程序(使用通过 Apache 代理的 Gunicorn)。
在我的主要 httpd.conf 文件中,我有:
<IfModule proxy_module>
# Include the proxy information for VMS Flask Application
Include conf/extra/httpd-foo.conf
</IfModule>
在我的 httpd-foo.conf 文件中,我有:
ProxyPreserveHost On
ProxyPass /foo http://localhost:8000/
ProxyPassReverse /foo http://localhost:8000/
Timeout 2400
ProxyTimeout 240
PHP 网站运行于:https://myphpwebsite.com 我希望 Flask 应用程序在以下位置运行:https://myphpwebsite.com/foo
我遇到的问题是当我访问 Flask URL 时,我遇到了 2 个问题。首先,如果我在“foo”之后不包含斜杠,我会得到一个 404(因为该目录实际上并不存在于真实的 Web 目录中。第二个问题是我所有的 Flask 路由都假定“/”是“ root”,现在不是。我不知道如何告诉 Flask 所有路由都应该在它们前面加上“/foo”。
这可能吗?
-- 一些附加信息--
我尝试使用“-E”选项运行 gunicorn 命令,告诉它 SCRIPT_NAME 似乎只对主页有帮助:
gunicorn app:app -b 0.0.0.0:8000 -t 180 -e SCRIPT_NAME=/foo -w 4
目前,如果我访问 https://myphpwebsite.com/foo/ 会导致 500 内部服务器错误。我可以看到我的“未登录”重定向似乎可以正常工作并将我带到 https://myphpwebsite.com/foo/login,但它再次导致 500 错误。
【问题讨论】: