Мне нужно написать директиву размещения nginx для прокси-запросов в подкаталог на другой сервер сохранение urlencoding и удаление предиката подкаталога.
Вот искусственный пример - запрос вроде этого:
http://1.2.3.4/api/save/http%3A%2F%2Fexample.com
должен пройти как
http://abcd.com/save/http%3A%2F%2Fexample.com
Я пробовал несколько разных способов. Вот пара из них:
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;
}
Но он декодирует строку, поэтому http://abcd.com
получает /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;
}
Но он сохраняет подкаталог, поэтому http://abcd.com
получает /api/save/http%3A%2F%2Fexample.com
.
Что нужно, где-то посередине. Спасибо!
UPD: здесь ticket в отслеживателе ошибок nginx