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-Securityflujo 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=0para 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
ifse 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_luadirectiva del módulo Lua. P.ejfuente
apt-get -t wheezy-backports install nginx-extras.