我已经将 Nginx 设置为 fastcgi_pass 到 Django,并且不想从“/”为 Django 提供服务。我想在 URL 前加上“/django/sample/”之类的前缀,然后让 Nginx 在该前缀被传递给 Django 之前删除该前缀——这样 Django 的内部就会像它实际上是从“/”提供服务一样。
我尝试更新 Django 应用程序以在路由的 URL 中包含前缀,如下所示:
urlpatterns = patterns('',
'^', include(base_urlpatterns), # iff you wish to maintain the un-prefixed URL's too
'^your_prefix/', include(base_urlpatterns),
)
我目前像这样做一个 fastcgi_pass :
#django sample
location /django/sample {
include fastcgi_params;
fastcgi_pass 127.0.0.1:8024;
}
但这不是一个优雅的解决方案,因为我的 django 应用程序中的任何 URL 都必须确保包含像“/django/sample”这样的前缀。这也意味着当我在服务器上本地运行 VS 时,URL 可能需要不同。
我构建了相当多的 django 应用程序,它们将从一台服务器运行,并且不想总是对 URL 进行这种愚蠢的操作,并记得更新 Django 中的所有 URL。
我已经在谷歌上搜索了一段时间,试图弄清楚如何用 nginx 做到这一点,但没有看到任何东西。
因此,我希望使用 Nginx 在请求中删除“/django/sample”,然后再将其传递给 Django。以前有人做过吗?