プロキシ sub.domain.com/link1 -> 10.1.1.1:8080/someotherlink1

プロキシ sub.domain.com/link1 -> 10.1.1.1:8080/someotherlink1

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;
}

おすすめ記事