5

正規表現で使用すると、Nginx は常に URL のエンコードを解除するようです。書き換えルールがあります:

location /api/ {
    rewrite /api/(.*)$ $1 break;
    proxy_pass http://127.0.0.1:8000/$1;
}

usl から API を削除したいのですが、残りのパスはそのままにしておきます。パスの一部は、電子メール アドレス someone@somewhere.com です。someone%40somewhere.com を渡していますが、Nginx は @ 記号でそれを返しています。

4

2 に答える 2

3

どうやら正解は

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

完全な回答と元の作成者については、URL デコードなしの Nginx pass_proxy サブディレクトリを参照してください。

(この質問は私が参照したものよりも古いことを認識していますが、Google検索でこれを見つけたので、最後の質問ではない可能性があります...)

于 2019-02-13T17:46:23.037 に答える