본문 바로가기
#IT 업무노트

[Cluster 전환 #9] 프록시 서버 구성하기

by 꾸미라기 2024. 7. 26.
반응형
SMALL


아래 두 가지 연계 건으로 방화벽 OPEN시 프록시 서버 구축 요청을 받았습니다.

1. WIPS 전세계 특허 정보 API 연계
2. 공통API 인증 서버 연계

방화벽 open시에는 소스IP A, 타겟IP C, 프록시 서버 B일 경우에 A->C에서 A->B, B->C 형태로 열어야 합니다.
프록시 서버를 구성하는 이유는 사내서비스가 외부서비스를 접근할 때 Client서버의 정보를 감추려는 의도로 보이며 보안적인 측면이 강합니다.
인프라에 요청하여 Windows 서버 요청하여 IP, HOST 정보 공유 받아 아래와 같이 프록시 서버 구축 방법을 소개하고자 합니다.

2024.06.29 - [#IT 업무노트] - [Cluster 전환 #8] Network Policy 운영에 apply 권한이 사라져 파이프라인 형태로 만들기

 

[Cluster 전환 #8] Network Policy 운영에 apply 권한이 사라져 파이프라인 형태로 만들기

Azure DevOps를 사용하여 Network Policy를 파이프라인 형태로 관리하는 방법을 단계별로 설명드리겠습니다. 이 예시에서는 Infra라는 새로운 저장소를 만들고, 네트워크 정책 파일을 관리하며, 파이프

ggumidr.com

 

2024.06.26 - [#IT 업무노트] - [Cluster 전환 #7] N개 프로젝트 하나의 Tomcat으로 실행하기

 

[Cluster 전환 #7] N개 프로젝트 하나의 Tomcat으로 실행하기

2024.06.26 - [#IT 업무노트] - [Cluster 전환 #6] N개 프로젝트 도커 파일 빌드 가이드 2024.06.26 - [#IT 업무노트] - [Cluster 전환 #5] MAVEN POM 파일 라이브러리 가져오기(Local, Url, Maven 저장소) 결론부터 말하자

ggumidr.com

 

NGINX를 사용하여 프록시 서버 구축 과정

프록시 서버를 설정할 때 타겟 IP가 여러 개인 경우, NGINX의 업스트림 블록을 사용하여 로드 밸런싱을 구성할 수 있습니다. 
다음은 NGINX를 사용하여 여러 타겟 IP로 프록시 서버를 구성하는 단계별 가이드입니다.

Windows에서 NGINX를 설치하고 프록시 서버로 구성하는 방법은 다음과 같습니다.

1. NGINX 설치
- NGINX 공식 사이트에서 Windows용 NGINX를 다운로드합니다.
- nginx-1.xx.x.zip 파일을 다운로드한 후, 원하는 디렉토리에 압축을 풉니다. 예를 들어, C:\nginx 디렉토리에 압축을 풉니다.
  . NGINX는 별도의 설치 과정이 필요하지 않으며, 압축을 푼 디렉토리에서 바로 실행할 수 있습니다.

2. NGINX 설정 파일 편집
- 설정 파일은 nginx.conf이며, 일반적으로 C:\nginx\conf\nginx.conf에 위치합니다.
- C:\nginx\conf\nginx.conf 파일을 텍스트 편집기(예: 메모장 또는 Visual Studio Code)로 엽니다.
- 아래의 예시 설정을 nginx.conf 파일에 추가하여 여러 타겟 IP로 프록시 서버를 구성합니다.

# 아래 방식으로 기존 서버에서 타겟으로 호출시 프록시 설정 방법 windows 서버이며 nginx 사용
http://sd.test.co.kr/big/second/getdata
http://sd.test.co.kr/big/first/getdata
http://sd.test.co.kr/big/third/getdata
http://sd.test.co.kr/ttt/third/getdata
http://test.example.co.kr/test/a/b/getdata
# 10.80.9.10:80
# 10.80.9.10:443

server { listen 80; server_name localhost; location /big/ { proxy_pass http://sd.test.co.kr; } location /ttt/ { proxy_pass http://sd.test.co.kr; } location /test/a/b/getdata { proxy_pass http://test.example.co.kr; } location / { # 아래 두 주소는 IP 주소를 사용하므로 프록시 주소가 정확하게 맞아야 합니다. # HTTP 요청 proxy_pass http://10.80.9.10:80; # HTTPS 요청 # proxy_pass https://10.80.9.10:443; } }

 

위 설정에서 /big/ 및 /ttt/로 시작하는 요청은 http://sd.test.co.kr로 프록시되고, 
/test/a/b/getdata로 시작하는 요청은 http://test.example.co.kr로 프록시됩니다. 
나머지 모든 요청은 기본적으로 http://10.80.9.10:80으로 프록시됩니다.


3. NGINX 실행
- Windows + R을 눌러 실행 창을 열고 cmd를 입력하여 명령 프롬프트를 엽니다.
- 명령 프롬프트에서 NGINX가 설치된 디렉토리로 이동합니다. 예를 들어, C:\nginx 디렉토리로 이동합니다.
  . cd C:\nginx
  . start nginx

4. NGINX 상태 확인 및 테스트
브라우저를 열고 http://localhost:80으로 접속하여 프록시 서버가 정상적으로 작동하는지 확인합니다. 
로드 밸런싱된 백엔드 서버의 콘텐츠가 표시되면 성공적으로 설정된 것입니다.

추가 로드 밸런싱 알고리즘
기본적으로 NGINX는 Round Robin 방식으로 로드 밸런싱을 수행합니다. 필요에 따라 다른 로드 밸런싱 알고리즘을 사용할 수 있습니다.

5. NGINX 종료
NGINX를 종료하려면 명령 프롬프트에서 다음 명령을 실행합니다.
nginx -s stop

Source 수정

클라이언트 소스를 변경하는 것은 프록시 설정에 영향을 받을 수 있습니다. 
클라이언트가 서버에 직접 요청하지 않고 프록시 서버를 통해 요청하는 경우, 클라이언트 코드를 수정해야 할 수 있습니다.

(1) 기존 소스의 URL 수정
클라이언트 소스에서 서버에 보내는 요청의 URL을 프록시로 변경된 URL로 수정해야 합니다. 
예를 들어, 기존에 http://sd.test.co.kr/big/second/getdata로 요청을 보내던 것을 http://프록시주소/big/second/getdata로 변경해야 합니다.

(2) 프록시 설정 추가
일부 클라이언트 라이브러리 또는 프레임워크는 프록시 서버를 사용할 수 있는 설정을 가지고 있습니다. 
클라이언트 코드에서 이러한 설정을 변경하여 프록시 서버를 사용하도록 설정할 수 있습니다.

(3) 인증 및 보안 설정
만약 프록시 서버가 인증 또는 특정 보안 요구 사항을 필요로 하는 경우, 클라이언트 코드에서 이를 고려해야 합니다. 인증 헤더를 포함하거나 프록시 서버와의 SSL/TLS 연결을 설정해야 할 수 있습니다.

반응형