つながりたい例:80そして例:82リバースプロキシ経由で特定のサイトにアクセスします。
ローカルホスト/api/購入/ ->http://example.com:80/
ローカルホスト/api/sell/ ->http://example.com:82/
設定ファイルを以下のように設定しました。
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 が見つかりませんというエラーが発生します。
以下は error.log ファイルの内容です。
connect() failed (10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET /api/ HTTP/1.1", upstream: "http://example.com/api/buy/", host: "localhost"
別のポートを使用した場合、設定がうまく機能することを確認しました。
同じポートに設定したいのですが、何か方法はありますか?
答え1
最善の方法は変更されましたプロキシパスhttp://example.com:80/に プロキシパスhttp://example.com:80/api/buy/
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/api/buy/;
proxy_redirect off;
}