Tengo un proxy inverso nginx simple:
server {
server_name external.domain.com;
location / {
proxy_pass http://backend.int/;
}
}
El problema es que los Set-Cookie
encabezados 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-Cookie
encabezados de respuesta, reemplazando ;Domain=backend.int
por ;Domain=external.domain.com
?
Pasar el Host
encabezado 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-Cookie
encabezados de respuesta, pero falla si solo hay uno. Como agentzh señala al final del hilo referenciado,if type(cookies) ~= "table" then cookies = {cookies} end
es 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