代码之家  ›  专栏  ›  技术社区  ›  Simen Russnes

Nginx子目录上的Django重定向到根目录

  •  0
  • Simen Russnes  · 技术社区  · 5 年前

    我有Django 2.2,我想把它提供给 http://myserver.com/application

    如果我尝试转到myserver.com/application/admin,就会立即重定向到myserver.com/admin。

    这是我应该在Nginx或Django中指定的设置,以避免出现这种情况吗?Django正在gunicorn中运行,请参见Nginx.conf:

    location /static {
            alias /home/simernes/workspace/django_server/env/static;
        }
    
    location /application {
            proxy_pass                http://localhost:8000/;
            proxy_redirect            off;
            proxy_set_header          Host               $host;
            proxy_set_header          X-Real-IP          $remote_addr;
            proxy_set_header          X-Forwarded-For    $proxy_add_x_forwarded_for;
            proxy_set_header          X-Forwarded-Proto  http;
            proxy_buffer_size         128k;
            proxy_buffers             8 128k;
            proxy_busy_buffers_size 256k;
        }
    

    最后,这就是my urls.py在项目文件夹“backend”中的样子:

    from django.contrib import admin
    from django.urls import path
    from django.conf.urls import url, include
    
    FORCE_SCRIPT_NAME="/application"
    STATIC_ROOT="/home/simernes/workspace/django_server/env/static/"
    app_name='backend'
    urlpatterns = [
        path('admin/', admin.site.urls),
        url(r'^', include('api.urls', namespace='api')),
    ]
    

    此外,当我转到myserver.com/application的根目录时,会得到一个错误404 not found,并且:

    Using the URLconf defined in backend.urls, Django tried these URL patterns, in this order:
    
        admin/
        ^ auth$ [name='auth']
    
    The current path, /, didn't match any of these.
    

    这不是我所期望的,因为我正在配置以显示我的api应用程序中可用的url(参见下面的url.py),但这不是我主要关心的问题,所以我只是将其包含在更广泛的上下文中。

    我还有一个名为api的应用程序文件夹,其中还包含url,它包含在后端:

    from django.conf.urls import url
    from rest_framework.authtoken import views as drf_views
    
    app_name="api"
    urlpatterns = [
            url(r'auth$', drf_views.obtain_auth_token, name='auth'),
    ]
    

    1 回复  |  直到 5 年前
        1
  •  0
  •   Iain Shelvington    5 年前

    你还需要重写 LOGIN_URL , STATIC_URL , LOGIN_REDIRECT_URL