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

时间:2019-07-14 15:53:52

标签: django nginx

我有Django 2.2,正在尝试使用Nginx代理传递将其提供给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;
    }

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

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错误:

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(请参阅下面的urls.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 个答案:

答案 0 :(得分:0)

您还需要覆盖LOGIN_URLSTATIC_URLLOGIN_REDIRECT_URL和其他需要路径的设置