Ich habe einen einfachen Nginx-Reverse-Proxy:
server {
server_name external.domain.com;
location / {
proxy_pass http://backend.int/;
}
}
Das Problem besteht darin, dass Set-Cookie
Antwortheader enthalten sind ;Domain=backend.int
, da das Backend nicht weiß, dass es sich um einen Reverse-Proxy handelt.
Wie kann ich den Inhalt der neu zu schreiben machen nginx - Set-Cookie
Response - Header und ersetzt ;Domain=backend.int
mit ;Domain=external.domain.com
?
Host
In diesem Fall ist es nicht möglich, den Header unverändert weiterzugeben.
Apache httpd hat diese Funktion schon eine Weile, ProxyPassReverseCookieDomain
aber ich kann anscheinend keinen Weg finden, dies auch in nginx zu tun.
cookies
nginx
rewrite
reverse-proxy
Tobia
quelle
quelle
Antworten:
Ab 1.1.15 wurde die Option proxy_cookie_domain hinzugefügt, um dieses Problem zu beheben.
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_domain
quelle
Die Antwort von @shamer funktioniert problemlos mit mehreren
Set-Cookie
Antwort-Headern, schlägt jedoch fehl, wenn nur einer vorhanden ist. Wie agentzh am Ende des referenzierten Threads hervorhebt,if type(cookies) ~= "table" then cookies = {cookies} end
ist dies erforderlich, um diesen Fall zu behandeln.Hier ist das Ganze:
quelle
Diese Frage tauchte in der Nginx-Mailingliste [1] auf. Es gibt keine Möglichkeit, dies direkt in Nginx zu tun. Sie müssen auf das Modul ngx_lua (> = v0.3.1) zurückgreifen.
Der Benutzer "agentzh" hat ein Beispiel dafür, wie dies in der Konfigurationsdatei aussehen würde:
[1] http://nginx.2469901.n2.nabble.com/Rewriting-the-domain-part-of-Set-Cookie-in-a-proxy-pass-td6453554.html
quelle