2016-09-20 2 views
0

Ich verwende Lighttpd als Proxy, um HTTPS-Verschlüsselung zu einer Anwendung hinzuzufügen, die nicht HTTPS-fähig ist.Lighttpd X-Forwarded-Host basierend auf eingehender Anfrage

Dafür verwende ich die folgende Konfiguration:

# Listen to port 443 
$SERVER["socket"] == ":443" { 
    ssl.engine = "enable" 
    include "ssl-params.conf" 

    proxy.server = ("" => (("host" => "127.0.0.1", "port" => 80))) 
    setenv.add-request-header = (
    "X-Forwarded-Proto" => "https", 
    "X-Forwarded-Host" => "hardcoded.domain.com", 
    "X-Forwarded-Port" => "443" 
) 
    # Set Error/Log 
    server.errorlog = "/var/log/lighttpd/error.log" 
} 

Diese Konfiguration funktioniert mit einer Ausnahme. Ich muss den Wert für X-Forwarded-Host fest codieren. Das war bis vor kurzem kein Problem, aber jetzt habe ich mehrere Domains, die auf denselben Proxy verweisen und den richtigen Domainnamen weiterleiten müssen.

Gibt es eine Möglichkeit, Host aus der eingehenden HTTPS-Verbindung zu extrahieren, um den korrekten Wert an X-Forwarded-Host zu füttern?

Antwort

1

lighttpd stellt den Host im X-Host-Anforderungsheader dem Back-End zur Verfügung, anstatt X-Forwarded-Host zu verwenden.

FYI: nach https://redmine.lighttpd.net/issues/418 wird lighttpd (in der Zukunft) plant Weitergeleitete HTTP Extension (https://tools.ietf.org/html/rfc7239) auch

BTW, lighttpd bereits fügt in Proxy-Anfragen X-Forwarded-Proto zu implementieren.

+0

Interessanter Fund! Die Anwendung, für die ich Proxy verwende, verwendet nur den X-Forwarded-Host und kann diesen nicht ändern. Ich denke, es gibt keine Möglichkeit, dieses Verhalten zu konfigurieren, oder? Kann ich andere Anfrage-Header lesen, bevor ich setenv benutze? – Bluuu

+0

Ich werde versuchen, X-Forwarded-Proto zu entfernen, danke für den Hinweis. – Bluuu

+0

Sie können mod_magnet in lighttpd verwenden, um einige willkürliche Manipulationen durchzuführen. Lua Code wäre zwei Zeilen wie (ungetestet) 'lighty.request [" X-Weitergeleitet-Host "] = lighty.request [" Host "] return 0' (mit der Rückkehr 0 in der zweiten Zeile) – gstrauss