You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用lighttpd部署Django polls项目遇404错误,求配置方案

解决方案

问题核心是lighttpd默认会移除scgi.server配置中指定的前缀路径(/polls)再传递给Django,导致Django收到的请求路径和内置服务器环境不一致,进而出现404或URL生成错误。只需调整lighttpd配置,保留完整请求路径传递给Django即可:

修改lighttpd.conf配置

在scgi.server的配置块中添加strip-request-url => ""选项,禁止lighttpd移除请求URL的前缀:

server.modules += ("mod_scgi","mod_rewrite")
scgi.protocol = "uwsgi"
scgi.server   = (
    "/polls" => ((
             "host" => "localhost",
             "port" => 7000,
             "check-local" => "disable",
             "strip-request-url" => ""
    ))
)

原理说明

  • 该配置让lighttpd将完整的请求URL(如/polls/、/polls/1/)作为PATH_INFO传递给Django,和内置服务器收到的路径完全一致
  • Django的URL规则无需任何修改,生成的链接(如/polls/1/)会直接匹配lighttpd的转发规则,不会出现重复路径的问题
  • 访问http://localhost:8080/polls/时,Django收到的PATH_INFO是/polls/,会匹配根urls.py中的path('polls/', include('polls.urls')),进而匹配polls.urls中的空路径,正常加载首页

额外注意事项

  • 确保uWSGI以Django项目根目录为运行目录,且启动命令未设置子路径挂载参数,例如使用:
    uwsgi --socket :7000 --module tutorial1.wsgi --chdir /path/to/your/django/project
    
  • 如果需要处理静态文件,可在lighttpd中添加静态文件路由规则,避免静态请求被转发给Django:
    $HTTP["url"] =~ "^/polls/static/" {
        alias "/path/to/your/django/project/static/"
    }
    

内容的提问来源于stack exchange,提问作者Henrique Bucher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:40:43