Quiero agregar un encabezado personalizado para la respuesta recibida del servidor detrás de nginx.
Si bien add_header
funciona para respuestas procesadas por nginx, no hace nada cuando proxy_pass
se usa.
nginx
http-headers
proxypass
sorin
fuente
fuente
Respuestas:
Hay un módulo llamado HttpHeadersMoreModule que le brinda más control sobre los encabezados. No viene con Nginx y requiere instalación adicional. Con él, puede hacer algo como esto:
Eso "establecerá el encabezado de salida del servidor en el valor personalizado para cualquier código de estado y cualquier tipo de contenido". Reemplazará los encabezados que ya están configurados o los agregará si no están configurados.
fuente
Secure
yHttpOnly
banderas en una cookie de respuesta ? Sin embargo, la cookie de respuesta de destino solo tiene la cookiename
y losexpire
atributos.add_header
funciona tan bien conproxy_pass
como sin. Hoy realicé una configuración en la que he usado exactamente esa directiva. Sin embargo, tengo que admitir que también he tenido problemas para configurar esto sin recordar exactamente la razón.Ahora mismo tengo una configuración que funciona y contiene lo siguiente (entre otros):
Antes, nginx
1.7.5
add_header funcionaba solo en respuestas exitosas, en contraste con HttpHeadersMoreModule mencionado por Sebastian Goodman en su respuesta .Desde nginx
1.7.5
, puede usar la palabra clavealways
para incluir encabezados personalizados incluso en respuestas de error. Por ejemplo:Limitación: no puede anular el
server
valor del encabezado utilizandoadd_header
.fuente
add_header X-Upstream $upstream_addr always;
X-Upstream: 10.10.10.10
vsX-Upstream: 53c2d28edefdf501ab7c92e02a0c1687
(md5 probablemente no sea útil para enmascarar la infraestructura, pero transmite la idea).add_header
directiva. No tiene que enviarlos en absoluto.Como escribe Oliver:
Sin embargo, como escribe Shane, a partir de Nginx 1.7.5, debe aprobar
always
para obteneradd_header
trabajar con respuestas de error, así:fuente
Ocultar el encabezado de respuesta y luego agregar un nuevo valor de encabezado personalizado
Agregar un encabezado con
add_header
funciona bien con el pase de proxy, pero si hay un valor de encabezado existente en la respuesta, apilará los valores.Si desea establecer o reemplazar un valor de encabezado (por ejemplo, reemplazar el
Access-Control-Allow-Origin
encabezado para que coincida con su cliente para permitir el uso compartido de recursos de origen cruzado), puede hacer lo siguiente:Entonces
proxy_hide_header
combinado conadd_header
le da el poder de establecer / reemplazar valores de encabezado de respuesta.Se puede encontrar una respuesta similar aquí en ServerFault
ACTUALIZAR:
Nota:
proxy_set_header
sirve para configurar los encabezados de la solicitud antes de que la solicitud se envíe más, no para configurar los encabezados de respuesta (estos atributos de configuración para los encabezados pueden ser un poco confusos).fuente
Puedes probar esta solución:
En su
location
bloque cuando useproxy_pass
haga algo como esto:No estoy seguro de que sea exactamente lo que necesita, pero intente manipular este método y tal vez el resultado se ajuste a su problema.
También puedes usar esta combinación:
fuente
location / { proxy_pass http://127.0.0.1:8080/; proxy_hide_header "Access-Control-Allow-Origin"; if ($http_origin ~* "^https://(example.com|www.example.com)$") { add_header Access-Control-Allow-Origin "$http_origin"; } }