Ketika saya menjelajah ke URL ini: http://localhost:8080/foo/%5B-%5D
server ( nc -l 8080
) menerimanya apa adanya:
GET /foo/%5B-%5D HTTP/1.1
Namun ketika saya proksi aplikasi ini melalui nginx (1.1.19):
location /foo {
proxy_pass http://localhost:8080/foo;
}
Permintaan yang sama dialihkan melalui port nginx diteruskan dengan jalur diterjemahkan:
GET /foo/[-] HTTP/1.1
Tanda kurung siku yang didekode dalam jalur GET menyebabkan kesalahan pada server target ( Status HTTP 400 - Karakter ilegal di jalur ... ) saat tiba tanpa diloloskan.
Apakah ada cara untuk menonaktifkan decoding URL atau menyandikannya kembali sehingga server target mendapatkan jalur yang sama persis ketika dialihkan melalui nginx? Beberapa aturan penulisan ulang URL yang pintar?