HTTP를 HTTPS로 리디렉션하도록 lighttpd를 구성하는 방법은 무엇입니까?

HTTP를 HTTPS로 리디렉션하도록 lighttpd를 구성하는 방법은 무엇입니까?

클라이언트 브라우저에서 지원하는 경우 내 웹사이트에 대한 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
    }
}

관련 정보