首页 > 解决方案 > 使用 nginx 为 django 网站提供服务时,如何修复“未在此服务器上找到请求的资源。”?

问题描述

我已经托管了我www.gojainyatra.com用 django 制作的网站,使用 nginx 提供服务。虽然有些页面可以正确打开,但有些页面会出现错误,例如

https://www.gojainyatra.com/dharamshala/firstshala/vlogs/2019/6/20/5/9/46/test/

未找到 在此服务器上未找到请求的资源

我的 nginx 配置:

upstream app_server {
    server unix:/home/gojainyatra/run/gunicorn.sock fail_timeout=0;
}

server {
    listen 80;
    server_name gojainyatra.com www.gojainyatra.com;

    keepalive_timeout 5;
    client_max_body_size 4G;

    access_log /home/gojainyatra/logs/nginx-access.log;
    error_log /home/gojainyatra/logs/nginx-error.log;

    location /static/ {
        alias /home/gojainyatra/staticfiles/;
    }

    # checks for static file, if not found proxy to app
    location / {
        try_files $uri @proxy_to_app;
    }

    location @proxy_to_app {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;
      proxy_pass http://app_server;
    }
}

我的 urls.py 的一部分

urlpatterns = [
path('dharamshala/<slug:slug>/',views.shala_info,name='shala_info'),   

path('dharamshala/<slug:slug>/vlogs/',views.shala_vlogs_list,name='shala_vlogs_list'),  

path('dharamshala/<slug:slug>/vlogs/<year>/<month>/<day>/<hour>/<minute>/<second>/<username>/',views.shala_vlog_descp,name='shala_vlog_descp'),
]

我的views.py的一部分(函数 shala_vlog_descp 应该为出现未找到错误的页面提供服务,它在开发环境中工作正常)

def shala_info(request,slug):
    shala = get_object_or_404(Shala,name_without_space=slug)
    return render(request,'shala_info.html',{'shala':shala})

def shala_vlog_descp(request,slug,year,month,day,hour,minute,second,username):
    shala = get_object_or_404(Shala,name_without_space=slug)
    my_vlog = get_object_or_404(vlog, dharamshala__name_without_space=slug, 
       last_updated__year=year,last_updated__month=month,last_updated__day=day,  
       last_updated__hour=hour,last_updated__minute=minute,
       last_updated__second=second ,writer__username=username)
    return render(request,'shala_vlog_descp.html', 
       {'shala':shala,'vlog':my_vlog})

def shala_vlogs_list(request,slug):
    shala = get_object_or_404(Shala,name_without_space=slug)
    return render(request,'shala_vlogs_list.html',{'shala':shala})

所有页面都在开发环境中正确提供,但在生产环境中没有。请帮忙。

标签: djangonginxdigital-ocean

解决方案


推荐阅读