如何在不破坏 FastCGI 应用程序的情况下重定向 URL?

如何在不破坏 FastCGI 应用程序的情况下重定向 URL?

(我认为这个问题重复了Lighttpd 从 www.domain.com 重定向到 domain.com,但那个没有引起足够的重视并且太旧了)。

我正在尝试通过 lighttpd+FastCGI 部署应用程序并加密所有流量。如果我在 URL 中明确使用 HTTPS,效果会很好,但是当我尝试将 URL 从 HTTP 重定向到 HTTPS 时,应用程序脚本名称(在本例中为 index.py)会包含在 URL 中,因此https://somedomain.com/bleh我明白了 https://somedomain.com/index.py/bleh,这会触发“未找到”错误。

我尝试移动一些东西,但我不知道如何很好地进行重定向。这是我的 lighttpd.conf 的相关内容

$SERVER["socket"] == ":80" {
    $HTTP["host"] =~ "(.*)" {
        url.redirect = (
            "^/(.*)" => "https://%1/$1"
        )
    }
}

$SERVER["socket"] == ":443" {
    ssl.engine = "enable"
    ssl.pemfile = "certificate.pem"
    ssl.use-sslv2 = "disable"
    ssl.use-sslv3 = "disable"
}

fastcgi.server = (
    "index.py" => ((
        "socket" => "/tmp/app.socket",
        "bin-path" => "index.py",
        "max-procs" => 1,
        "bin-environment" => (
            "REAL_SCRIPT_NAME" => ""
        ),
        "check-local" => "disable"
    ))
)

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

答案1

重写发生在重定向之前。对于您来说,解决方案是将 fastcgi 和重写放入 ssl 套接字中,因为无论如何您只希望它用于 ssl。

请不要在 /tmp 中生成套接字,而是使用专用的目录,只有 lighttpd 才能在其中创建文件。

相关内容