Quiero agregar un encabezado personalizado para la respuesta recibida del servidor detrás de nginx.
Si bien add_headerfunciona para respuestas procesadas por nginx, no hace nada cuando proxy_passse 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
SecureyHttpOnlybanderas en una cookie de respuesta ? Sin embargo, la cookie de respuesta de destino solo tiene la cookienamey losexpireatributos.add_headerfunciona tan bien conproxy_passcomo 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.5add_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 clavealwayspara incluir encabezados personalizados incluso en respuestas de error. Por ejemplo:Limitación: no puede anular el
servervalor del encabezado utilizandoadd_header.fuente
add_header X-Upstream $upstream_addr always;X-Upstream: 10.10.10.10vsX-Upstream: 53c2d28edefdf501ab7c92e02a0c1687(md5 probablemente no sea útil para enmascarar la infraestructura, pero transmite la idea).add_headerdirectiva. No tiene que enviarlos en absoluto.Como escribe Oliver:
Sin embargo, como escribe Shane, a partir de Nginx 1.7.5, debe aprobar
alwayspara obteneradd_headertrabajar 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_headerfunciona 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-Originencabezado para que coincida con su cliente para permitir el uso compartido de recursos de origen cruzado), puede hacer lo siguiente:Entonces
proxy_hide_headercombinado conadd_headerle da el poder de establecer / reemplazar valores de encabezado de respuesta.Se puede encontrar una respuesta similar aquí en ServerFault
ACTUALIZAR:
Nota:
proxy_set_headersirve 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
locationbloque cuando useproxy_passhaga 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"; } }