클라이언트 브라우저에서 지원하는 경우 내 웹사이트에 대한 HTTP 요청을 HTTPS로 리디렉션하고 싶습니다. 내 웹 서버는 lighttpd입니다.
답변1
이것이 내가 수동으로 한 방법입니다.안전하지 않은 요청 헤더 업그레이드. lighttpd에 대한 문서를 찾지 못해 공유하고 있는데 작동하는 것 같습니다.
도메인의 lighttpd 구성에 다음을 추가합니다.
$HTTP["host"] =~ "^example\.com$" {
$HTTP["scheme"] == "http" {
$REQUEST_HEADER["Upgrade-Insecure-Requests"] == "1" {
# Follows https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Upgrade-Insecure-Requests
# Adding the header only works if mod_setenv is loaded before mod_redirect in the server config!
# (See https://redmine.lighttpd.net/issues/1895)
setenv.add-response-header = (
"Vary" => "Upgrade-Insecure-Requests"
)
url.redirect-code = 307
url.redirect = ("/(.*)" => "https://example.com/$1")
}
}
# ... any extra configuration for domain example.com ...
}
변경 사항을 적용하려면 lighttpd를 다시 시작하세요.
참고: 이를 위해서는 mod_setenv 및 mod_redirect를 로드해야 하며 리디렉션 응답의 일부로 추가 헤더를 보낼 필요가 없다고 가정합니다.
답변2
2007년 lighttpd 문서의 공식 소스는 다음 위키 페이지입니다:https://wiki.lighttpd.net/HowToRedirectHttpToHttps
lighttpd의 최신 버전에서는:
server.modules += ("mod_redirect")
$HTTP["scheme"] == "http" {
url.redirect = ("" => "https://${url.authority}${url.path}${qsa}")
url.redirect-code = 308
}
도착하다적절하게Vary: Upgrade-Insecure-Requests
응답 헤더를 사용하여 모든 http
요청 에 응답가능한https
리디렉션되며 Upgrade-Insecure-Requests
설정된 경우에만 다음으로 리디렉션됩니다.
server.modules += ("mod_setenv", "mod_redirect")
$HTTP["scheme"] == "http" {
# Follows https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Upgrade-Insecure-Requests
# Adding the header only works if mod_setenv is loaded before mod_redirect in lighttpd.conf!
# (See https://redmine.lighttpd.net/issues/1895)
setenv.add-response-header = ("Vary" => "Upgrade-Insecure-Requests")
$REQUEST_HEADER["Upgrade-Insecure-Requests"] == "1" {
url.redirect = ("" => "https://${url.authority}${url.path}${qsa}")
url.redirect-code = 308
}
}