Tengo un proxy inverso en nginx que representa bastantes sitios. Recientemente he habilitado HTTP Strict Transport Security para todos los sitios web habilitados para SSL. Ahora tengo un sitio que no quiere tener esto habilitado.
Pensé que simplemente haría una simple verificación si mi Strict-Transport-Security
flujo ascendente ya me envió un encabezado, y si no, solo agregue uno. De esa manera, mi flujo ascendente podría enviar un encabezado STS que contenga max-age=0
para evitar tener HSTS habilitado por el proxy.
Pensé que simplemente cambiaría mi configuración de la siguiente manera:
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";
}
}
Pero, probablemente porque si es malo , esto no funciona. He intentado un montón de cosas diferentes para asegurarme de que la variable realmente exista (que es el caso), pero nada parece ayudar.
¿Cómo podría hacer que esto funcione?
fuente
Esto se debe a que
if
se ejecuta antes de que tenga lugar el proxy y en este momento no hay ninguna variable$upstream_http_strict_transport_security
.Podrías usar
header_filter_by_lua
directiva del módulo Lua. P.ejfuente
apt-get -t wheezy-backports install nginx-extras
.