sub.domain.com/link1
別のサーバーで簡単なプロキシを実行してみてください
10.1.1.1:8080/someotherlink1
。
私のサーバーコンテキストは次のとおりです。 (デフォルトのnginx.confを修正しました。)
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name sub.domain.com;
root /;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location /link1 {
proxy_pass http://10.1.1.1:8080/link2
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
`
ただし、Webページにアクセスすると、nginx 502の無効なゲートウェイページのみがロードされます。
ログのエラーは次のとおりです。
2017/03/15 22:04:27 [crit] 8647#0: *11 connect() to 10.1.1.1:8080 failed (13: Permission denied) while connecting to upstream, client: 112.xxx.xxx.xxx, server: sub.domain.com, request: "GET /link1/ HTTP/1.1", upstream: "http://10.1.1.1.1:8080/link2/", host: "sub.domain.com"
少し奇妙に見えるのは、GET /link1/
これが最終的なアップストリームURLのリンクではないため、このリンクを取得しようとするべきではないということです。
私は何が間違っていましたか?
ベストアンサー1
proxy_pass
ディレクティブにURIを渡す必要はありません。最初に書き換えるかリダイレクトし、それをプロキシに渡す必要があります。たとえば、次のようになります。
location /link1 {
return 301 $scheme://$http_host/link2$args;
}
location /link2 {
proxy_pass http://10.1.1.1:8080;
}