Ich habe einen Reverse-Proxy auf Nginx, die ziemlich viele Websites Proxys. Ich habe kürzlich HTTP Strict Transport Security für alle SSL-fähigen Websites aktiviert. Ich habe jetzt eine Website, auf der dies nicht aktiviert werden soll.
Ich dachte, ich würde nur eine einfache Überprüfung durchführen, ob mein Upstream mir bereits einen Strict-Transport-Security
-header gesendet hat , und wenn nicht, fügen Sie einfach einen hinzu. Auf diese Weise könnte mein Upstream einen STS-Header mit senden max-age=0
, um zu vermeiden, dass HSTS vom Proxy aktiviert wird.
Ich dachte, ich würde einfach meine Konfiguration wie folgt ändern:
location / {
proxy_pass http://webservers;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto "https";
if ($upstream_http_strict_transport_security = "") {
add_header Strict-Transport-Security "max-age=15552000";
}
}
Aber wahrscheinlich, weil, wenn es böse ist , das nicht funktioniert. Ich habe verschiedene Dinge versucht, um sicherzustellen, dass die Variable tatsächlich existiert (was der Fall ist), aber nichts scheint zu helfen.
Wie könnte ich diese Arbeit machen?
quelle
Das liegt daran, dass
if
es ausgeführt wird, bevor der Proxy stattfindet und zu diesem Zeitpunkt keine Variable vorhanden ist$upstream_http_strict_transport_security
.Sie können die
header_filter_by_lua
Direktive aus dem Lua-Modul verwenden. Z.Bquelle
apt-get -t wheezy-backports install nginx-extras
.