我有一个在 gunicorn 下运行的 WSGI 应用程序(一个 Django 项目)127.0.0.1:18731
,我使用 Apache 和 mod_proxy 将请求http://example.com/my-project/*
从http://127.0.0.1:18731/*
. 静态文件存储在/my-project/
. 如果 Django 应用程序不需要重定向任何东西,这可以正常工作,但如果它尝试重定向请求(例如,添加尾部斜杠到http://example.com/my-project/foo
),它最终会/my-project/
从 URL 中删除,给我留下无效的 URL http://example.com/foo/
。
我的 mod_proxy 配置如下:
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests On
ProxyPass /my-project/ http://127.0.0.1:18731/ retry=0
ProxyPassReverse /my-project/ http://127.0.0.1:18731/ retry=0
ProxyPreserveHost On
ProxyErrorOverride Off
为了可移植性,我不想强/my-project/
制 Django 为其所有 URL 加上前缀。Apache 显然应该使用该行自己处理前缀ProxyPassReverse
。我究竟做错了什么?