複数の nginx リバースプロキシを実行するにはどうすればよいですか?

複数の nginx リバースプロキシを実行するにはどうすればよいですか?

つながりたいexample.com/api/購入そしてexample.com/api/sellリバースプロキシ経由で特定のサイトにアクセスします。

だから私は接続しようとしているローカルホスト/api/購入そしてローカルホスト/api/販売nginx を使用。

設定ファイルを以下のように設定しました。

server {
    listen       80;
    server_name  localhost;



    #access_log  logs/host.access.log  main;

    location / {
        root   html;
        index  index.html index.htm;
    }


    location = /api/buy {
    return 302 /api/buy/;
    }

        location /api/buy/ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header HOST $host;
            proxy_set_header X-NginX-Proxy true;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_pass http://example.com:80/;
            proxy_redirect off;
            }

    location = /api/sell {
    return 302 /api/sell/;
    }

        location /api/sell/ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header HOST $host;
            proxy_set_header X-NginX-Proxy true;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_pass http://example.com:82/;
            proxy_redirect off;
            }

}

しかし、/api/buy と /api/sell を接続すると、404 が見つかりませんというエラーが発生します。

別のポートを使用して設定することもできます。

同じポートに設定したいのですが、何か方法はありますか?

答え1

場所が正規表現を使用して指定されている場合、および名前付きの場所内でも。

このような場合、proxy_pass は URI なしで指定する必要があります。

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

関連情報