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