muszę napisać dyrektywę lokalizacji nginx do żądań proxy do podkatalogu do innego serwera konserwującego urlencoding i usunięcie podkatalogu prefiks.Nginx podkatalogu pass_proxy bez url dekodowania
Oto przykład sztuczne - żądać tak:
http://1.2.3.4/api/save/http%3A%2F%2Fexample.com
powinny uchodzić za
http://abcd.com/save/http%3A%2F%2Fexample.com
Próbowałem kilka różnych sposobów. Here're kilka z nich:
location /api/ { rewrite ^/api(/.*) $1 break; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_pass http://abcd.com; }
Ale to dekoduje ciąg, więc http://abcd.com
dostaje /save/http://example.com
location /api/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_pass http://abcd.com; }
Ale zachowuje podkatalog, więc http://abcd.com
otrzymuje /api/save/http%3A%2F%2Fexample.com
.
To, co jest potrzebne, znajduje się gdzieś pośrodku. Dziękuję Ci!
UPD: Oto ticket w nginx bug tracker
Możesz spróbować czegoś z lua. Ale przede wszystkim tego nie potrzebujesz, ponieważ według specyfikacji http te adresy są identyczne. –
Lub użyj subdomeny zamiast podkatalogu –
@AlexeyTen Serwer działający na 'http: // abcd.com' przetwarza te żądania w inny sposób i Nie mam nad tym kontroli. Czy znasz link do tego fragmentu specyfikacji http? Nie mogę go znaleźć –