Saya ingin menambahkan tajuk khusus untuk tanggapan yang diterima dari server di belakang nginx.
Meskipun add_header
berfungsi untuk respons yang diproses nginx, ia tidak melakukan apa pun saat proxy_pass
digunakan.
nginx
http-headers
proxypass
sorin
sumber
sumber
Jawaban:
Ada modul bernama HttpHeadersMoreModule yang memberi Anda kontrol lebih besar atas header. Itu tidak datang dengan Nginx dan membutuhkan instalasi tambahan. Dengan itu, Anda dapat melakukan sesuatu seperti ini:
Itu akan "menyetel header output Server ke nilai kustom untuk kode status dan jenis konten apa pun". Ini akan mengganti header yang sudah disetel atau menambahkannya jika tidak disetel.
sumber
Secure
danHttpOnly
menandai pada cookie tanggapan ? Cookie respons target hanya memiliki cookiename
danexpire
atribut.add_header
bekerja sebaikproxy_pass
tanpa. Saya baru saja menyiapkan konfigurasi di mana saya telah menggunakan petunjuk itu. Saya harus mengakui bahwa saya juga berjuang untuk mengatur ini tanpa benar-benar mengingat alasannya.Saat ini saya memiliki konfigurasi yang berfungsi dan berisi yang berikut (antara lain):
Sebelumnya nginx
1.7.5
add_header hanya berfungsi pada respons yang berhasil, berbeda dengan HttpHeadersMoreModule yang disebutkan oleh Sebastian Goodman dalam jawabannya .Sejak nginx
1.7.5
Anda dapat menggunakan kata kuncialways
untuk menyertakan header khusus bahkan dalam respons kesalahan. Sebagai contoh:Batasan: Anda tidak dapat mengganti nilai
server
header menggunakanadd_header
.sumber
add_header X-Upstream $upstream_addr always;
X-Upstream: 10.10.10.10
vsX-Upstream: 53c2d28edefdf501ab7c92e02a0c1687
(md5 mungkin tidak membantu dalam menutupi infrastruktur, tetapi menyampaikan gagasan).add_header
direktif. Anda tidak perlu mengirimnya sama sekali.Seperti yang ditulis oliver:
Namun, seperti yang ditulis Shane, pada Nginx 1.7.5, Anda harus meneruskan
always
agaradd_header
dapat bekerja untuk respons kesalahan, seperti:sumber
Sembunyikan header respons, lalu tambahkan nilai header kustom baru
Menambahkan header dengan
add_header
berfungsi baik dengan proxy pass, tetapi jika ada nilai header yang ada dalam respons itu akan menumpuk nilainya.Jika Anda ingin menyetel atau mengganti nilai header (misalnya, mengganti
Access-Control-Allow-Origin
header agar sesuai dengan klien Anda untuk mengizinkan berbagi sumber daya lintas sumber), Anda dapat melakukan hal berikut:Jadi
proxy_hide_header
dikombinasikan denganadd_header
memberi Anda kekuatan untuk mengatur / mengganti nilai header respons.Jawaban serupa dapat ditemukan di sini di ServerFault
MEMPERBARUI:
Catatan:
proxy_set_header
adalah untuk menyetel header permintaan sebelum permintaan dikirim lebih lanjut, bukan untuk menyetel header respons (atribut konfigurasi untuk header ini bisa sedikit membingungkan).sumber
Anda dapat mencoba solusi ini:
Di
location
blok Anda saat Anda menggunakanproxy_pass
lakukan sesuatu seperti ini:Saya tidak yakin apakah itu persis yang Anda butuhkan tetapi coba beberapa manipulasi metode ini dan mungkin hasilnya sesuai dengan masalah Anda.
Anda juga dapat menggunakan kombinasi ini:
sumber
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"; } }