(Я считаю этот вопрос дубликатом Lighttpd перенаправляет с www.domain.com на domain.com, но тот не получил должного внимания и слишком старый).
Я пытаюсь развернуть приложение через lighttpd + FastCGI и зашифровать весь трафик. Это хорошо работает, если я явно использую HTTPS в URL-адресе, но как только я попробую перенаправить с HTTP на HTTPS, URL-адреса, имя сценария приложения (в данном случае 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"
)
перезапись происходит до перенаправления. в вашем случае решение состоит в том, чтобы поставить fastcgi и перезаписать его в сокете ssl, так как вы все равно хотите, чтобы он был только для ssl.
Пожалуйста, не создавайте сокеты в / tmp, используйте выделенный для этого каталог, где только lighttpd может создавать файлы.