2017-03-24 18 views
0

現在、私はhttp://www.example.comにサイトを持っており、http://www.example.com/api/v2/<anyhting>からのすべてのリクエストはhttp://api.v2.com/<anything>にリダイレクトされました。 http://api.v2.comにはURIがないことに注意してください。 私の設定:URIなしのnginx proxy_pass

server { 
    listen   80; 
    server_name  www.example.com; 

    location /api/v2/ { 
     proxy_pass http://api.v2.com; 
    } 

    location/{ 
     index index.html; 
     root /var/www/example.com/htdocs; 
    } 
} 

この方法では、しかし、要求がされているプロキシはhttp://api.v2.com/api/v2/<anything>ないhttp://api.v2.com/<anything>ありません。 は、私はすでに気づいたこと:希望として

location /api/v2 { 
    proxy_pass http://api.v2/com/api; 

作品 - http://api.v2.com/api/<anything>からhttp://api.v2.com/api/v2/<anything>プロキシ。

最初の動作を達成する方法はありますか?書き換えを使わなければならないのですか?私はそれが正規化されたURIに関連していることを知っています、そして、それは期待されています、それを行う方法があるかどうかを知りたいだけです。

答えて

0

proxy_passディレクティブがURIで指定されている場合、要求がサーバに渡されたとき、次に、位置を一致正規化された要求URIの一部が指令で指定されたURIに置き換えられています。

server { 
    listen   80; 
    server_name  www.example.com; 

    location /api/v2/ { 
     proxy_pass http://api.v2.com/; 
    } 

    location/{ 
     index index.html; 
     root /var/www/example.com/htdocs; 
    } 
} 

出典:だからhttp://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

+0

あなたが設定を提供して動作します(proxy_passディレクティブでapi.v2.comを楽しみに加えるスラッシュ)ことを言っていますか?例えばwww.example.com/api/v2/developer/10へのリクエストは、api.v2.com/developer/10にプロキシされますか?私はこれを試したと確信して、それは動作しませんでした... –

関連する問題