Я использую lighttpd 1.4.31 с поддержкой ssl, и у меня возникла проблема с принудительным использованием https на определенном виртуальном хосте. Если я отключу строку перенаправления из следующей конфигурации, она будет работать, как ожидалось (http и https работают, но перенаправления нет), но когда я включаю ее, я обнаруживаю, что браузер вызывает причину в цикле 301 с. Я не понимаю, почему это происходит, поскольку для меня перенаправление должно применяться только в http. У меня есть mod_redirect, загруженный в верхней части конфигурации, и еще один виртуальный хост с принудительным ssl для некоторого домена ... Я не верю, что это должно иметь какое-либо влияние. Что я делаю не так в следующем фрагменте конфигурации? Обратите внимание, что я заменил свой домен site.example.com.
$HTTP["host"] == "site.example.com" {
dir-listing.activate = "enable"
accesslog.filename = "/home/lighttpd/site.example.com/logs/access.log"
server.document-root = "/home/lighttpd/site.example.com/htdocs"
server.upload-dirs = ("/tmp")
server.errorlog = "/home/lighttpd/site.example.com/logs/error.log"
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/home/lighttpd/site.example.com/cert.pem"
$HTTP["url"] =~ "^/shell" { # shellinabox
proxy.server = ( "" => ((
"host" => "127.0.0.1",
"port" => 4200,
),),)
}
}
$HTTP["scheme"] == "http" {
url.redirect = (".*" => "https://site.example.com/$0")
}
}
debug.log-request-handling = "enable"
и проверьте error.log, также см. DebugVariablesВзглянем на мою конфигурацию, которая почти такая же, как у вас:
У меня есть еще одна вещь в моей конфигурации сокета:
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
# .....
setenv.add-environment = (
"HTTPS" => "on"
)
}
И мой редирект обрабатывается вне первого хозяин, как это:
$HTTP["scheme"] == "http" {
$HTTP["host"] =~ "site.example.fr" {
url.redirect = ( "^/(.*)" => "https://site.example.fr/$1" )
}
}
И все работает как шарм.