【问题标题】:Lighttpd fastcgi urls not rewrittenLighttpd fastcgi url 未重写
【发布时间】:2023-07-16 05:39:01
【问题描述】:

我有一个带有 fastcgi 和 web.py 的 lighttpd 服务器,具有以下 fcgi 配置:

fastcgi.server = ( "/code.py" => 
(( "socket" => "/tmp/fastcgi.socket",
   "bin-path" => "/etc/lighttpd/code/code.py",
   "check-local" => "disable",
   "max-procs" => 1

)) )

和主要配置:

url.rewrite-once = (
  "^(.*)/favicon.ico$"  => "/static/favicon.ico",
  "^/static/(.*)$"      => "/static/$1",
  "^/code.py(.*)$"      => "/code.py/404",
  "^/forum(.*)$"        => "/code.py/forum/$1"
)

如果我去 www.mysite.com/forum 一切正常,但如果我去 www.mysite.com/code.py/forum 我不会被重定向到我应该做的 404 ,但实际上得到了第一个链接。 我基本上是想向外界隐藏我的内在。

我查看了错误日志,似乎服务器确实在重写url,但它并没有产生任何影响。

(response.c.300) -- splitting Request-URI 
(response.c.301) Request-URI  :  /code.py/forum 
(response.c.302) URI-scheme   :  https 
(response.c.303) URI-authority:  www.mysite.com 
(response.c.304) URI-path     :  /code.py/forum 
(response.c.305) URI-query    :   
(response.c.300) -- splitting Request-URI 
(response.c.301) Request-URI  :  /code.py/404 
(response.c.302) URI-scheme   :  https 
(response.c.303) URI-authority:  www.mysite.com 
(response.c.304) URI-path     :  /code.py/404 
(response.c.305) URI-query    :   
(response.c.349) -- sanatising URI 
(response.c.350) URI-path     :  /code.py/404 
(mod_access.c.135) -- mod_access_uri_handler called 
(mod_fastcgi.c.3609) handling it in mod_fastcgi 
(response.c.470) -- before doc_root 
(response.c.471) Doc-Root     : /var/www/html 
(response.c.472) Rel-Path     : /code.py 
(response.c.473) Path         :  
(response.c.521) -- after doc_root 
(response.c.522) Doc-Root     : /var/www/html 
(response.c.523) Rel-Path     : /code.py 
(response.c.524) Path         : /var/www/html/code.py 
(response.c.541) -- logical -> physical 
(response.c.542) Doc-Root     : /var/www/html 
(response.c.543) Rel-Path     : /code.py 
(response.c.544) Path         : /var/www/html/code.py 
(mod_fastcgi.c.3035) got proc: pid: 30262 socket: unix:/tmp/fastcgi.socket-0 load: 1 

有什么想法吗?

【问题讨论】:

    标签: lighttpd web.py fastcgi


    【解决方案1】:

    试试这样的:

    url.rewrite-once = (
      "^/favicon\.ico$" => "/static/favicon.ico",
      "^/forum(.*)$" => "/forum/code.py$1"
    )
    
    $HTTP["url"] =~ "^/forum(.*)$" { 
      ( "/code.py" => 
        (( "socket" => "/tmp/fastcgi.socket",
           "bin-path" => "/etc/lighttpd/code/code.py",
           "check-local" => "disable",
           "max-procs" => 1,
           "bin-environment" => ("REAL_SCRIPT_NAME" => "")
        ))
      )
    }
    

    【讨论】:

    • 我知道,但没有帮助。我想让我的网站简单地访问 index.html,而访问 mysite.com/forum 的任何内容都由 fastcgi 进程处理。问题是我不想让“mysite.com/code.py/forum”类型的网址合法(请参阅我的主要问题中的配置,我尝试重定向到 404,但它没有工作)。
    • 你试过设置"bin-environment" => ("REAL_SCRIPT_NAME" => "")吗?
    • 我认为你应该只为 /forum 子路径启用 fastcgi。 $HTTP["url"] =~ "^/forum(.*)$" { fastcgi.server = ( "/code.py" => 查看redmine.lighttpd.net/projects/1/wiki/Docs_ModFastCGI
    • 看来"bin-environment" => ("REAL_SCRIPT_NAME" => "") 成功了。我还不确定它的作用,我会在测试它时弄清楚它没有任何不需要的副作用。我将只为子路径启用 fastcgi。感谢您的帮助。
    • 不客气。很抱歉,我很久以前运行lighttpd环境,现在我部署web.py应用程序的首选方式是nginx+uwsgi或apache2+mod_wsgi。