Saya memiliki proxy reverse nginx sederhana:
server {
server_name external.domain.com;
location / {
proxy_pass http://backend.int/;
}
}
Masalahnya adalah bahwa Set-Cookie
header respons berisi ;Domain=backend.int
, karena backend tidak tahu itu sedang terbalik proksi.
Bagaimana saya bisa membuat nginx menulis ulang isi dari Set-Cookie
header respon, menggantikan ;Domain=backend.int
dengan ;Domain=external.domain.com
?
Melewati Host
tajuk tidak berubah bukanlah pilihan dalam kasus ini.
Apache httpd telah memiliki fitur ini untuk sementara waktu, lihat ProxyPassReverseCookieDomain
, tetapi sepertinya saya tidak dapat menemukan cara untuk melakukan hal yang sama di nginx.
cookies
nginx
rewrite
reverse-proxy
Tobia
sumber
sumber
Jawaban:
Mulai dari 1.1.15, opsi proxy_cookie_domain telah ditambahkan untuk mengatasi masalah ini.
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_domain
sumber
Jawaban dari @shamer berfungsi dengan baik dengan beberapa
Set-Cookie
header respons, tetapi gagal jika hanya ada satu. Seperti yang ditunjukkan agentzh di akhir utas yang dirujuk,if type(cookies) ~= "table" then cookies = {cookies} end
diperlukan untuk menangani kasus itu.Ini semuanya:
sumber
Pertanyaan ini muncul di milis nginx [1]. Tidak ada cara untuk langsung melakukan ini di nginx. Anda harus menggunakan modul ngx_lua (> = v0.3.1).
Pengguna "agentzh" memiliki contoh tampilan seperti yang diuraikan dalam file konfigurasi:
[1] http://nginx.2469901.n2.nabble.com/Rewriting-the-domain-part-of-Set-Cookie-in-a-proxy-pass-td6453554.html
sumber