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

lighttpd搭配uWSGI模块时PATH_INFO未定义,Bottle.py崩溃如何解决?

解决lighttpd + uWSGI下PATH_INFO缺失问题

当前你的lighttpd配置未正确拆分SCRIPT_NAME和PATH_INFO,导致Bottle这类依赖WSGI规范的框架无法获取路由信息。以下是修复方案:

修改lighttpd配置

调整scgi.server块的配置,核心是启用路径剥离并修正匹配规则:

scgi.protocol = "uwsgi"
scgi.server = (
    "/tp2" => ( "tp2-app" => (
          "host" => "127.0.0.1",
          "port" => 8080,
          "check-local" => "disable",
          "strip-request-uri" => "enable",
          "fix-root-scriptname" => "enable"
        )
    ),
)

关键配置说明

  • "strip-request-uri" => "enable":强制lighttpd将匹配的前缀/tp2从请求URI中剥离,剩余部分作为PATH_INFO传递给后端应用,同时将SCRIPT_NAME设置为/tp2,符合WSGI规范。
  • 路径改为/tp2而非/tp2/:确保匹配所有以/tp2开头的请求(包括/tp2、/tp2/hello等),避免仅匹配/tp2/开头的路径。
  • 保留fix-root-scriptname" => "enable":当请求为/tp2/时,自动将SCRIPT_NAME设为/tp2、PATH_INFO设为/,避免空值问题。

验证效果

修改配置后重启lighttpd,再次请求/tp2/hello?date=2024-03-24T14:22:10-04:00,环境变量中将出现:

SCRIPT_NAME = /tp2
PATH_INFO = /hello

此时Bottle即可正常识别路由,不会因缺失PATH_INFO崩溃。

uWSGI启动命令保持不变

无需调整uWSGI的启动参数,继续使用:

uwsgi --uwsgi-socket 127.0.0.1:8080 --plugin python3 -w hello_world_app

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 06:42:43