Zachowaj zakodowane ścieżki w istniejącej trasie przekazywania HTTP NGINX
Użyj request_uri, gdy kontrakt przekazywania wymaga oryginalnej ścieżki i zapytania, zachowując istniejącą walidację celu.
Trasa zbudowana z $uri może wysłać inną ścieżkę niż ta podana przez klienta. W przypadku http://service.example/files/a%2Fb?view=raw znak ukośnika z escape jest częścią tego oryginalnego zapisu.
| Zmienna | Reprezentacja |
|---|---|
| $uri | Bieżący znormalizowany URI, który może się zmienić podczas przetwarzania wewnętrznego |
| $request_uri | Oryginalny URI żądania, wraz z jego argumentami zapytania |
W istniejącym układzie serwera proxy przekazującego HTTP, który już wybiera i waliduje autorytet celu, oryginalną ścieżkę i zapytanie można zachować za pomocą:
proxy_pass http://$http_host$request_uri;$http_host dostarcza wybrany autorytet nagłówka Host w tym układzie. Zachowaj ograniczenia klienta odbiornika, politykę celu i konfigurację rozwiązywania nazw.
Zastąpienie $uri$is_args$args tym wyrażeniem zmienia wysyłaną reprezentację; poprzednie używa znormalizowanej ścieżki i bieżących argumentów. Wybieraj zgodnie z kontraktem punktu końcowego, zwłaszcza gdy znaczenie mają znaki rozdzielające z escape lub podpis obejmuje oryginalny cel. Zamierzone przepisanie ścieżki ma inne wymaganie.
Dotyczy to widocznego żądania HTTP. Tunel HTTPS CONNECT przenosi późniejsze żądanie wewnątrz TLS i wymaga własnej obsługi.