1. 개요
현재 매 월마다 서비스 정기점검을 진행하고 있다.
보통 새벽시간대에 점검을 진행하는데 이 때 일반 사용자는 점검중인 서비스에 접근할 수 없도록 점검 페이지로 이동해야 하며, 개발자, QA등 테스트 인원들은 동일 도메인에 정상적으로 접근하도록 작업이 필요한 상황이다.
이에 점검 시간 중 사내 대역에서는 서비스에 정상적으로 접근하고 그 외 외부 접근은 모두 점검페이지로 접근하도록 Nginx Proxy 서버를 구축하려 한다.
2. proxy란?
proxy : 대리, 대신, 대리권 출처: 동아출판 프라임 영한사전
프록시란 ‘대리’라는 단어 뜻 그대로 통신이나 응답을 중계하여 대리로 수행하는 것을 뜻한다.
이 프록시 기능을 하는 주체를 프록시 서버(Proxy Server)라고 한다.
2.1 proxy 서버의 종류
프록시 서버는 서버 위치에 따라 두 가지로 나뉜다.
포워드 프록시(Forward Proxy)
Client가 요청을 전달하면 Proxy 서버가 요칭 및 응답을 받아와서 전달을 대신 해준다. Client를 숨기는(감추는) 효과가 있다.
리버스 프록시(Reverse Proxy)
Client가 Proxy서버에 데이터를 요청하면 Proxy 서버가 내부망 서버에서 데이터를 받아와 Client에 전달해준다.
Server를 감추는 효과가 있으며, Load Balancling 역할을 수행하기도 한다.
이 중 나는 IP 별 접근을 제어해야 하기 때문에 리버스 프록시 구성으로 진행하였다.
3. nginx reverse proxy 구성
다음은 nginx proxy pass의 기본적인 구성이다.
location / {
proxy_pass http://127.0.0.1:3000;
}
즉, 현재 서버에 / 로 시작하는 path로 접근하면 http://127.0.0.1:3000로 전달해준다는 의미이다. client는 3000 port에 접근하지 않았지만 결론적으로는 3000 port에 접근한 것과 동일한 효과가 발생한다.
추가로 nginx는 client가 접근한 path를 확인하여 가장 적합한 locaiton 블록으로 요청을 보내어 처리한다.
여러개가 일치할 경우 우선 순위가 존재한다.
1순위 = | 정확히 일치할 경우 | location = /, location = /api ... |
2순위 ^~ | 우선 순위를 부여하고 앞 부분이 일치할 경우 (여러 개가 충돌할 경우 긴 것이 적용된다) | location ^~/api |
3 순위 ~ | 대소문자를 구분하는 정규표현식(일치할 경우) | location ~/api |
4순위 *~ | 대소문자를 무시하는 정규표현식(일치할 경우) | location *~/api |
5순위 / | 앞 부분이 일치할 경우(여러 개가 충돌할 경우 긴 것이 적용) | location / location /api |
다음은 예시로 작성한 nginx.conf이다.
# /etc/nginx/conf.d/proxy-test.conf
server {
listen 80;
server_name test1.cwking.net test2.cwking,net ;
location / {
proxy_pass http://127.0.0.1:3000;
}
location /api {
proxy_pass http://127.0.0.1:8080;
}
}
nginx conf를 다음과 같이 작성하게 되면 해당 도메인에 대해서
http://test1.cwking.net 으로 접근 시, 서버 내부 3000 port 로 전달,
http://test1.cwking.net/api 로 접근 시 서버 내부 8080 port 로 전달하게 된다.
'DevOps > open source_오픈소스' 카테고리의 다른 글
[Tools] 크기가 큰 텍스트 파일 열기(파일 분할) (1) | 2024.11.15 |
---|---|
[Nginx] 애플리케이션 토큰 헤더 요청 오류 (헤더 옵션 변경) (2) | 2024.11.14 |
[NGINX] Nginx에서 Client IP(접속자 IP) 확인 방법 (0) | 2024.10.07 |
[NGINX] 기본 구성과 Configuration (0) | 2024.09.09 |
[Redmine] 프로젝트 관리 오픈소스, 레드마인 (1) | 2023.11.30 |