Saya memiliki pengaturan proxy terbalik untuk akses ke aplikasi pihak ketiga yang terletak di dalam intranet dari internet. Katakanlah aplikasi ini ada di URL:
https://internalserver:8080/
(hanya dapat dijangkau dari intranet)
dan proksi aktif:
https://proxyserver/
(dapat dijangkau dari tempat mana pun di dunia)
Proxy dikelola oleh nginx dan berfungsi ok. Ketika pengguna mengakses https://proxyserver/
mereka mendapatkan konten dari aplikasi di https://internalserver:8080/
.
Masalahnya adalah aplikasi tersebut menulis URL absolut dalam respons HTML sehingga, ketika pengguna mengklik tautan ke halaman baru, browser mencoba menemukan halaman tersebut dengan nama internalnya, misalnya
https://internalserver:8080/somepage
alih-alih
https://proxyserver/somepage
.
Saya tahu ini adalah bug program, tetapi saya tidak dapat memodifikasi program.
Dapatkah saya mencegat respons, memodifikasi URL, dan mengirimkannya (dimodifikasi) ke klien akhir dengan nginx? Atau mungkin dengan alat lain?
EDIT: Saya melihat pertanyaan ini sebelumnya, tetapi kasus saya lebih spesifik, pertanyaan yang dikutip meminta modifikasi umum. Dalam hal program ad hoc fast-cgi adalah solusi terbaik, yang saya inginkan adalah solusi yang lebih spesifik untuk (saya pikir) skenario yang lebih umum. sementara program fast-cgi dapat bekerja, saya mencari solusi termudah dan mungkin lebih kuat dan terbukti di dunia nyata, solusi untuk skenario ini.
sumber
Jawaban:
Ini adalah Video Nginx resmi di YouTube yang menunjukkan Penulisan Konten Inline.
https://youtu.be/7Y7ORypoHhE?t=20m22s
Memang dengan sub_filter
http://nginx.org/en/docs/http/ngx_http_sub_module.html
Dalam kasus Anda, Anda melihat sesuatu seperti:
sumber
http://nginx.org/en/docs/http/ngx_http_sub_module.html
sumber