Django应用程序在runserver下运行,但在nginx下运行404s

时间:2011-10-14 01:28:20

标签: django nginx fastcgi

我的Django应用程序在“python manage.py runserver .....”下运行时在我的服务器上正常运行但是当我在nginx / fastcgi下运行时,我得到了404.

以下是错误消息:

  

找不到页面(404)
  请求方法:GET
  请求网址:blah.youtrain.me/admin/(由于新帐户的StackOverflow限制,我删除了http)   
  使用youtrainme.urls中定义的URLconf,Django按以下顺序尝试了这些URL模式:
  
  ^管理员/ DOC /
  ^管理员/   
  当前网址与其中任何一个都不匹配。

无论我在app上的哪个页面转到nginx,它总是会显示相同的错误消息:“当前的网址,与其中任何一个都不匹配。”

在nginx下,如果我只是去blah.youtrain.me,上面的请求URL更改为:blah.youtrain.me//< ---请注意尾随斜杠。但是,在runserver下,请求URL行中没有尾部斜杠。这可能会提供一些见解吗?

任何帮助将不胜感激! :)

以下是此网站的nginx配置:

  

服务器
      {
      听80;
      server_name blah.youtrain.me;
      access_log /home/ytmadmin/public_html/blah.youtrain.me/log/access.log;
      error_log /home/ytmadmin/public_html/blah.youtrain.me/log/error.log debug;
      #rewrite rule - files
      location~ *。+。>(xml | jpg | jpeg | gif | png | ico | css | zip | tgz | gz | rar | bz2 | doc | xls | exe | pdf | ppt | txt | tar | mid | midi | WAV | BMP | RTF | JS | SWF)
          {
          access_log off;
    到期30d;
          打破;
          }
      #python requests
      位置/
          {
          fastcgi_pass 127.0.0.1:8010;
          fastcgi_pass_header授权;
    fastcgi_intercept_errors off;
    include / usr / local / nginx / conf / fastcgi_params;
          }
  }

我的urls.py

  

来自django.conf.urls.defaults导入模式,include,url
  
  来自django.contrib import admin
  admin.autodiscover()
  
  urlpatterns = patterns('',
      (r'^ $','main.views.index'),
      (r'^ admin / doc /',include('django.contrib.admindocs.urls')),
  
      #取消注释下一行以启用admin:
      (r'^ admin /',include(admin.site.urls)),
  )

1 个答案:

答案 0 :(得分:3)

我在这里找到了解决方案:https://serverfault.com/questions/134863/nginx-fastcgi-problems-with-django-double-slashes-in-url

在nginx下,我不得不从我的nginx / conf / fastcgi_params文件中删除以下行,一切都很顺利:

fastcgi_param SCRIPT_NAME $ fastcgi_script_name;