반응형
Nginx로 리버스 프록시를 설정하면서 여러 시행 착오를 겪었다.
특히 단순해 보이지만 경로의 마지막에 '/'를 붙이는 것과 붙이지 않는 것의 차이를 정리하겠다.
Nginx에서 경로 끝에 /를 붙이는 것과 붙이지 않는 것의 차이는 proxy_pass에서 다르게 동작한다.
경로 끝에 /가 붙는 경우
proxy_pass http://challet.world/;
- 원본 요청 경로를 유지
- 예를 들어, 클라이언트가 https://challet.world/eureka/somepath로 요청을 하면, 이 요청은 http://challet-discovery-spring:8761/somepath로 전달됨
즉, 클라이언트의 경로가 그대로 백엔드 서버로 전달함
nginx.conf
location /eureka/ {
proxy_pass http://challet-discovery-spring:8761/;
}
위 설정에서 클라이언트가 /eureka/somepath로 접근하면, 백엔드에서는 http://challet-discovery-spring:8761/somepath로 요청이 전달됨
경로 끝에 /가 붙지 않는 경우
proxy_pass http://challet.world;
- Nginx가 클라이언트의 요청 경로를 백엔드에 전달할 때 기준 경로를 변경
- 예를 들어, 클라이언트가 https://challet.world/eureka/somepath로 요청을 하면, 이 요청은 http://challet-discovery-spring:8761/eureka/somepath로 전달됨
즉, Nginx의 location에서 정의된 경로(/eureka)가 백엔드 URL에 추가됨
nginx.conf
location /eureka/ {
proxy_pass http://challet-discovery-spring:8761;
}
이 경우 클라이언트가 /eureka/somepath로 접근하면, 백엔드에서는 http://challet-discovery-spring:8761/eureka/somepath로 요청이 전달됨
즉, 경로가 중복될 수 있음
정리
경로 끝에 /가 붙는 경우: Nginx는 경로를 그대로 전달
/eureka/somepath -> http://challet-discovery-spring:8761/somepath
경로 끝에 /가 붙지 않는 경우: Nginx가 location 블록의 경로를 추가하여 전달
/eureka/somepath -> http://challet-discovery-spring:8761/eureka/somepath
반응형
'CI,CD' 카테고리의 다른 글
[Nginx] Jenkins, Grafana, Kibana Reverse Proxy 설정 방법 (0) | 2024.09.23 |
---|