1

我正在使用 uwsgi 部署一个 Django 应用程序。该应用程序部署在SERVER_URL:PORT.

使用代理服务器,该应用程序也可以通过EXTERNAL_WEB_SITE/MY_APP_NAME.

使用管理页面时,在: 下EXTERNAL_WEB_SITE/MY_APP_NAME/ADMIN/,我可以看到正确的模型。但是,管理页面中指向模型本身的链接直接指向:EXTERNAL_WEB_SITE/ADMIN/MAIN_PACKAGE/SELECTED_MODEL/. 也就是说 - MY_APP_NAME 不会传递提供的链接。我想这是因为在服务器本身中部署的应用程序没有应用程序名称,只是在特定端口下。

为了解决它,我尝试FORCE_SCRIPT_NAME=MY_APP_NAMEsettings.py. 这给了我很好的链接。但是 - 当试图修改一个对象并保存它时 - 在EXTERNAL_WEB_SITE/MY_APP_NAME/ADMIN/MAIN_PACKAGE/SELECTED_MODEL/ITEM/- 在点击Save我链接到之后EXTERNAL_WEB_SITE/MY_APP_NAME/MY_APP_NAME/ADMIN/MAIN_PACKAGE/SELECTED_MODEL/ITEM/- 也就是说 - 我得到 MY_APP_NAME 两次。

有谁知道如何解决这个问题?

4

1 回答 1

0

您需要通过SCRIPT_NAME代理服务器的请求传递 env 变量

或者,您可以让两个实例运行一个FORCE_SCRIPT_NAME设置,第二个不运行

uwsgi 有一个不错的选择,您可以在两个端口上部署您的应用程序,或者(甚至更好)根据标头或路径设置环境变量

[uwsgi]
route = ^(/MY_APP_NAME)/ addvar:SCRIPT_NAME=$1
于 2016-06-13T22:31:22.193 回答