[1] 정상
server {
listen 10000 ;
listen [::]:10000 ;
server_name ngtest.koreaats.com;
location ~ /aa {
return 302 http://$server_name:8000;
}
location ~ /bb {
return 302 http://$server_name:9000;
}
}
[2] 의도하지 않음
- 서버의
localhost
로 리다이렉트 X, 요청자 기준의 localhost
로 리다이렉트
- 따라서 이 방식으로는 한 포트에서
/abc
요청만으로 서버 내부의 다른 포트로 요청을 돌려주지 못함
server {
listen 10000 ;
listen [::]:10000 ;
server_name _;
location ~ /aa {
return 302 <http://localhost:8000>;
}
location ~ /bb {
return 302 <http://localhost:9000>;
}
}
[3] 안됨
- proxy_pass로 이동시키는 주소의 마지막이
/
가 없으면 의도한 대로 동작하지 않음
server {
listen 9999;
location /api {
proxy_pass <http://localhost:13001>;
}
location /dev {
proxy_pass <http://localhost:18001>;
}
}
[4] 정상(의도한 동작)
- 주의사항
- proxy_pass uri의 마지막에
/
를 붙여서 정확한 uri로 전달해야 함
- 라우팅되는 목적지 포트의 서비스는
0.0.0.0:port
가 아니라 127.0.0.1:port
로 로컬호스트에 대해 정확히 배포된 상태여야 함
- 방화벽 인바운드 규칙으로 9999만 열어도 아래와 같은 라우팅 가능
server {
listen 9999;
location /dev0 {
proxy_pass <http://localhost:18001/>;
}
location /dev1 {
proxy_pass <http://localhost:19001/>;
}
}