Nginx 在子目录中为 Django 提供服务 - 管理员登录正在重定向

jcD*_*nas 5 django nginx django-admin

我必须从子目录(主机名/服务/)中提供一个 Django 应用程序。到目前为止,我能够进入管理员登录提示 (hostname/service/admin/login/?next=/admin/),但在成功登录后我被重定向到 (hostname/admin/login/) 并获得a 404.
如何保留正确的子目录并进入管理面板?

这是 nginx.conf 服务器块:

server {
    listen 80;
    root  /usr/share/nginx/html/;
    charset utf-8;

    location /service {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;
      proxy_pass http://djangoapp:8000/;
      proxy_set_header X-Real-IP $remote_addr;
    }

    location /static {
        alias /usr/src/app/static;
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:这些是来自 urls.py 的 urlpatterns:

from django.conf.urls import url, include
from django.contrib import admin

# A custom view of my own
from app.views import AdvanceCustomSearchView

urlpatterns = [
  url(r'^search/$', AdvanceCustomSearchView(), name='index_search'),
  url(r'^app/', include('app.urls')),
  url(r'^admin/', admin.site.urls),
]
Run Code Online (Sandbox Code Playgroud)

Pab*_*noz 5

您需要将FORCE_SCRIPT_NAME设置添加到您的settings.py如下:

FORCE_SCRIPT_NAME = '/service'
Run Code Online (Sandbox Code Playgroud)

请注意,末尾没有斜杠。