Tengo un proxy inverso nginx simple:
server {
server_name external.domain.com;
location / {
proxy_pass http://backend.int/;
}
}
El problema es que los Set-Cookieencabezados de respuesta contienen ;Domain=backend.int, porque el backend no sabe que está siendo proxy inverso.
¿Cómo puedo hacer que nginx reescriba el contenido de los Set-Cookieencabezados de respuesta, reemplazando ;Domain=backend.intpor ;Domain=external.domain.com?
Pasar el Hostencabezado sin cambios no es una opción en este caso.
Apache httpd ha tenido esta característica por un tiempo, vea ProxyPassReverseCookieDomain, pero parece que no puedo encontrar una manera de hacer lo mismo en nginx.
cookies
nginx
rewrite
reverse-proxy
Tobia
fuente
fuente

Respuestas:
A partir del 1.1.15, se agregó la opción proxy_cookie_domain para solucionar este problema.
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_domain
fuente
La respuesta de @shamer funciona bien con múltiples
Set-Cookieencabezados de respuesta, pero falla si solo hay uno. Como agentzh señala al final del hilo referenciado,if type(cookies) ~= "table" then cookies = {cookies} endes necesario para manejar ese caso.Aquí está todo:
fuente
Esta pregunta apareció en la lista de correo nginx [1]. No hay forma de hacer esto directamente en nginx. Debe recurrir al uso del módulo ngx_lua (> = v0.3.1).
El usuario "agentzh" tiene un ejemplo de cómo se vería esto en el archivo de configuración:
[1] http://nginx.2469901.n2.nabble.com/Rewriting-the-domain-part-of-Set-Cookie-in-a-proxy-pass-td6453554.html
fuente