티스토리 뷰

개요

  • NGINX는 오랜 역사와 뛰어난 성능을 자랑하는 오픈 소스 리버스 프록시 소프트웨어이다. 일반적으로는 고정된 특정 목적지에 대한 리버스 프록시이자 로드 밸런서로 구성하는데 사용되는데, 이번 글에서는 요청 정보에 포함된 목적지 주소를 인식하여 다이나믹 리버스 프록시로 셋업하는 방법을 간단히 소개하고자 한다. (NGINX에 대한 자세한 사용법은 본 블로그의 이 글을 참고한다.)

Dockerfile

  • Dockerfile을 아래와 같이 작성한다. 직접 작성한 NGINX 설정 파일을 복사하는 과정을 추가했다.
FROM public.ecr.aws/nginx/nginx:latest
EXPOSE 80
COPY default.conf /etc/nginx/conf.d/default.conf

default.conf

  • NGINX 프록시 설정을 작성할 차례이다. default.conf 파일을 아래와 같이 작성한다.
server {
    listen 80;
    server_name localhost;
    underscores_in_headers on;

    location / {
        resolver 8.8.8.8;
        proxy_pass $http_x_target_base_endpoint;
        proxy_pass_request_headers on;
        proxy_ssl_server_name on;
    }
}
  • 본 프록시의 HTTP 80 포트로 요청이 수신되면 X-TARGET-BASE-ENDPOINT (대소문자 무관) 요청 헤더의 값을 목적지로 인식하여 목적지로의 리버스 프록시로 작동하게 된다.

빌드 및 실행

# 도커 이미지 빌드
$ docker build -t foo/proxy .

# 빌드된 도커 이미지 실행
$ docker run -p 80:80 foo/proxy

프록시 작동 테스트

# 본 블로그의 https://jsonobject.tistory.com/391 에 대한 프록시 요청
$ curl --header "x-target-base-endpoint: https://jsonobject.tistory.com" localhost:80/391

참고 글

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함