0

私は走っています

nginx version: nginx/1.4.6 (Ubuntu)

私が達成しようとしているのは;

  1. リクエストはhttp://my.frontend.com/goto/mytokenからです
  2. http://my.backend.com:5202/goto/mytokenで処理してほしい
  3. 制限は、/goto/ トラフィックのみがバックエンドに転送され、フロントエンド URL に /goto/ がない場合、404 リターン、つまりhttp://my.frontend.comである必要があります。

gotoは静的で、mytokenはリクエストごとに異なります (バックエンドに認識されています)。

このシナリオのサーバー定義は次のとおりです。

server {
listen 80;
server_name my.frontend.com;

location ~* ^/goto/(.*) {
    proxy_pass http://my.backend.com:5202/$uri$1$is_args$args;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

しかし、問題は次のとおりです。access.log によると、私の URI /goto/mytoken は正常に構築されているようですが、バックエンドは 404 を返します

xxxx - - [27/May/2016:13:01:56 +0000] "GET /goto/7328372837182382938 HTTP/1.1" 404 69 " http://mywebsite.com/index.html " "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (Gecko のような KHTML) Chrome/50.0.2661.102 Safari/537.36"

以下がある場合、つまり場所に /goto/ がない場合、同じシナリオがうまく機能します。

server {
listen 80;
server_name my.frontend.com;

location / {
    proxy_pass http://my.backend.com:5202;
    ...
}
}

ここでヒントをいただければ幸いです。

4

1 に答える 1