Pertahankan Path Terenkode di Rute Penerusan HTTP NGINX yang Sudah Ada
Gunakan request_uri saat kontrak penerusan membutuhkan path dan kueri asli, sambil mempertahankan validasi tujuan yang sudah ada.
Rute yang dibangun dari $uri dapat mengirim path yang berbeda dari yang diberikan klien. Untuk http://service.example/files/a%2Fb?view=raw, garis miring yang di-escape adalah bagian dari ejaan asli tersebut.
| Variabel | Representasi |
|---|---|
| $uri | URI ternormalisasi saat ini, yang dapat berubah selama pemrosesan internal |
| $request_uri | URI permintaan asli, termasuk argumen kuerinya |
Dalam susunan proxy penerus HTTP yang sudah ada dan telah memilih serta memvalidasi otoritas tujuan, path dan kueri asli dapat dipertahankan dengan:
proxy_pass http://$http_host$request_uri;$http_host menyediakan otoritas header Host yang dipilih dalam susunan ini. Pertahankan pembatasan klien listener, kebijakan tujuan, dan konfigurasi resolusi nama.
Mengganti $uri$is_args$args dengan ekspresi ini mengubah representasi yang dikirim; ekspresi sebelumnya menggunakan path ternormalisasi dan argumen saat ini. Pilih sesuai kontrak endpoint, terutama saat pemisah yang di-escape penting atau tanda tangan mencakup target asli. Penulisan ulang path yang disengaja memiliki persyaratan berbeda.
Ini berlaku untuk permintaan HTTP yang terlihat. Terowongan HTTPS CONNECT membawa permintaan berikutnya di dalam TLS dan memerlukan penanganan terdukung tersendiri.