Leiten Sie alle http & https-Anforderungen mit lighttpd um

2694
TheLukeMcCarthy

Ich habe einen Ersatz-Himbeer-Pi und entschied mich daher für PirateBox.

Ich habe alles funktioniert, aber das Standardverhalten ist, keine https-Anfragen umzuleiten. Da die PirateBox niemals mit dem Internet verbunden ist und die Personen, die eine Verbindung herstellen, die Adresse wahrscheinlich nicht kennen, möchte ich alle Anfragen (http & https) an die PirateBox Uri, piratebox.lan, weiterleiten

Ich möchte es so einrichten, dass es einem Captive-Portal ähnelt, aber ich brauche keine Authentifizierung, und die Anfragen werden immer umgeleitet

PirateBox verwendet Arch Linux mit dnsmasq und lighttpd.
Meine aktuellen Einstellungen sind

/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") } } 

Während alle HTTP-Anforderungen auf die PirateBox-Seite umgeleitet werden, werden https-Anforderungen nicht umgeleitet und die PirateBox-Seite wird nicht geladen, sondern nur die Zeitüberschreitung.

Was mache ich falsch oder sollte ich anders vorgehen?

Update habe
ich auch probiert

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

und es funktioniert auch nicht

1
Haben Sie diese http://serverfault.com/a/450408 gesehen? Und vor allem der Teil über Browser, der nicht auf http umgeleitet wird, wenn eine Verbindung in https hergestellt wurde Toine42 vor 9 Jahren 0
Versuchen Sie [mod-rewrite] (http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModRewrite) .... [Quelle] (http://redmine.lighttpd.net/boards/2/topics/1341 ) mk117 vor 9 Jahren 0

1 Antwort auf die Frage

1
taskalman

Ich habe nicht viel Erfahrung mit sich lighttpdselbst, aber aus der Semantik der config-Datei scheint es mir, dass wenn Sie eine Verbindung über Port haben 443, diese auf Port umgeleitet wird, 443unabhängig davon, ob Sie dies http://in der URL oder angeben nicht. Wenn ich es richtig verstanden habe und Sie zum Port umleiten möchten 80, müssen Sie es explizit in der Direktive angeben:

url.redirect = ( "^/(.*)$" => "http://piratebox.lan:80/redirect.html" ) 
Leider geht das nicht. Ich würde erwarten, dass der Standardport von 80 für die Weiterleitung verwendet wird. Als Nebenbemerkung scheint die https-Anfrage ein Timeout zu haben, da der https-Verkehr es zu lighttpd macht. TheLukeMcCarthy vor 9 Jahren 0