프록시 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 {
    }
}

`

하지만 웹페이지에 액세스하면 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;
}

관련 정보