web-dev-qa-db-ja.com

lighttpdを使用してすべてのhttpおよびhttpsリクエストをリダイレクトします

予備のラズベリーパイを持っているので、PirateBoxをチェックすることにしました。

私はそれをすべて機能させていますが、デフォルトの動作はhttpsリクエストをリダイレクトしないことです。 PirateBoxがインターネットに接続されることはなく、接続している人はリクエストするアドレスを知らない可能性が高いため、すべてのリクエスト(http&https)をPirateBox Uri、piratebox.lanにリダイレクトしたいと思います。

キャプティブポータルと同様に設定したいのですが、認証は不要で、リクエストは常にリダイレクトされます

PirateBoxは、dnsmasqとlighttpdでArchLinuxを使用します。
私の現在の設定は

/etc/dnsmasq.conf

address=/#/192.168.77.1

/opt/piratebox/conf/lighttpd/lighttpd.conf

$HTTP["Host"] !~ "^piratebox\.lan.*$" {
        url.redirect = ( "^/(.*)$" => "http://piratebox.lan/redirect.html" )
}

$SERVER["socket"] == ":443" {
        $HTTP["Host"] !~ "^piratebox\.lan.*$" {
                url.redirect = ( "^/(.*)$" => "http://piratebox.lan/redirect.html" )
        }
}

$SERVER["socket"] == ":80" {
        $HTTP["Host"] !~ "^piratebox\.lan.*$" {
                url.redirect = ( "^/(.*)$" => "http://piratebox.lan/redirect.html")
        }
}

すべてのhttpリクエストはPirateBoxページにリダイレクトされますが、httpsリクエストはリダイレクトされず、PirateBoxページは読み込まれず、タイムアウトするだけです。

私は何を間違っているのですか、それともこれにアプローチする必要がありますか?

更新
私も試しました

$HTTP["scheme"] == "https" {
        url.redirect = ( "^/(.*)$" => "http://piratebox.lan/redirect.html" )
}

そしてそれも機能しません

1
TheLukeMcCarthy

私はlighttpd自体についてはあまり経験がありませんが、構成ファイルのセマンティクスから、ポート443で接続が確立されている場合はそうなるようです。 URLで443を指定するかどうかに関係なく、ポートhttp://にリダイレクトします。私が正しく理解していて、ポート80にリダイレクトしたい場合は、ディレクティブで明示的に指定する必要があります。

url.redirect = ( "^/(.*)$" => "http://piratebox.lan:80/redirect.html" )
1
taskalman