Redirect

如何在不破壞 FastCGI 應用程序的情況下重定向 URL?

  • October 28, 2014

(我認為這個問題是Lighttpd 從 www.domain.com 重定向到 domain.com的副本,但是這個問題沒有得到足夠的關注,而且它太舊了)。

我正在嘗試通過 lighttpd+FastCGI 部署應用程序並加密所有流量。如果我在 URL 中明確使用 HTTPS,它會很好用,但是一旦我嘗試從 HTTP 重定向到 HTTPS,URL 就會包含應用腳本名稱(在本例中為 index.py),而不是https:/ /somedomain.com/bleh我得到 https://somedomain.com/index.py/bleh,這會觸發 Not Found 錯誤。

我嘗試移動一些東西,但我不知道如何做好重定向。這是我的 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"
)

重寫發生在重定向之前。在您的情況下,解決方案是將 fastcgi 和 rewrite 放在 ssl 套接字中,因為無論如何您只希望它用於 ssl。

請不要在 /tmp 中生成套接字,使用專門用於此的目錄,只有 lighttpd 可以創建文件。

引用自:https://serverfault.com/questions/558802