2015-03-11 27 views
6

Orijinal URL:/API/url% 2Fencoded% 2F/= queryParams ilenginx proxy_pass ve URL kod çözme

nginx:? Bu yapılandırma ile

location /api { 
    client_max_body_size 2G; 
    proxy_pass https://oursite; 
} 

, ben ne zaman URL kodlaması korumak başardı vekilden geçerek. "Sitemizi" sonra "/" eklerseniz URL'yi deşifre eder.

Sorun:

Şimdi proxy sonra URL yine içerir "/ API /". URL kodlanmış parçaları korurken sadece "/ api /" yi kaldırmam gerekiyor.

+0

Bunun tekrar –

+1

bunu çözen bir ara ile yeniden yazmak kullanırsanız Değil uzun zaman önce olmadan aynı soruyu oldu Bir cevap. Benim düşünceme göre, böyle garip URL'lere sahip olmamak için api alamalısınız. Başka bir yol subdomain üzerinde api olması. –

+1

http://stackoverflow.com/q/28684300/1016033 –

cevap

8

Uzun zaman önce, cevapsız aynı soru vardı. Benim düşünceme göre, böyle garip URL'lere sahip olmamak için api alamalısınız. Başka bir yol subdomain üzerinde api olması. - 22:58

stackoverflow.com/q/28684300/1016033 de Alexey On 11 Mart '15 - Saat 23:01 Alexey On 11 Mart '15

Yaşındaki meydan kabul!

location /api/ { 
     rewrite^$request_uri; 
     rewrite ^/api/(.*) $1 break; 
     return 400; 
     proxy_pass http://127.0.0.1:82/$uri; 
    } 

İşte bu, millet!

Daha Nginx pass_proxy subdirectory without url decoding Ayrıntılar, ama çok, hatta sorgu dizesi ile çalışır:

% curl "localhost:81/api/url%2Fencoded%2F/?with=queryParams" 
/url%2Fencoded%2F/?with=queryParams 
% 
+0

İç içe geçmiş yollar olmadan çalışan herkes için, 'location/{proxy_pass http: //127.0.0.1$request_uri; } 'iyi çalışıyor – diachedelic

+0

@diachedelic, [daha fazla bilgi yanıtı] 'nda son kontrol grubuna bakın (// stackoverflow.com/questions/28684300/nginx-pass-proxy-subdirectory-without-url-decoding/37584637#37584637) - Örneğinizde '$ request_uri' gereksizdir. – cnst

+0

gum haklısınız, hatam proxy_pass http: //127.0.0.1 /; gibi bir eğik çizgi ekleyerek nginxin yolunu normalleştirmesine neden oldu (burada dokümanlar bölümünde belirtilmiştir: http://nginx.org/en/ docs/http/ngx_http_proxy_module.html # proxy_pass) – diachedelic

İlgili konular