![lighttpd を使用してすべての http および https リクエストをリダイレクトする](https://rvso.com/image/1452241/lighttpd%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%20http%20%E3%81%8A%E3%82%88%E3%81%B3%20https%20%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%82%92%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%E3%81%99%E3%82%8B.png)
余った Raspberry Pi があるので、PirateBox を試してみることにしました。
すべて動作していますが、デフォルトの動作では https リクエストはリダイレクトされません。PirateBox はインターネットに接続されることはなく、接続する人はリクエストするアドレスを知らない可能性が高いため、すべてのリクエスト (http と https) を PirateBox Uri、piratebox.lan にリダイレクトしたいと思います。
キャプティブポータルに似た設定をしたいのですが、認証は必要なく、リクエストは常にリダイレクトされます。
PirateBoxはdnsmasqとlighttpdを搭載したArch Linuxを使用しています。
現在の設定は
dnsmasq.conf は、
address=/#/192.168.77.1
設定ファイル
$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
私自身はこれについてあまり経験がありませんlighttpd
が、設定ファイルのセマンティクスから判断すると、ポート で接続が来ると、 URL で指定したかどうかに関係なく443
、ポート にリダイレクトされると思われます。私の理解が正しければ、ポート にリダイレクトしたい場合は、ディレクティブで明示的に指定する必要があります。443
http://
80
url.redirect = ( "^/(.*)$" => "http://piratebox.lan:80/redirect.html" )