본문 바로가기
linux

도메인을 이용한 Nginx 분기 처리

by yang sing 2023. 6. 11.

안녕하세요. 

이번 포스팅에서는 서비스 환경보다는 개발 환경에서 제가 플젝을 진행 하면서 설정 했던 도메인에 따른 분기처리 방법을 작성 하고자 합니다. 

 

현재 개발 환경에서 서버 인스턴스 한대에 3개의 WAS를 구동 시키고 요청이 들어오면 Nginx에서 도메인을 확인해 서버 내부에서 각각 구동중인 WAS로 분기처리를 하는 방식으로 구성을 했습니다.

 

Cloud 환경 LB 한대를 구성하고 SSL 인증서를 적용시켜둔 상태에서 해당 LB public 주소를 각 c-name으로 만들어둔 서비스 도메인 3개를 연결 시켜둔 상태입니다.

 

원래는 서버 한대에 하나의 WAS가 존재하여 하나의 도메인과 하나의 LB가 연결되어있으며 LB는 개발 서버에 있는 WAS로 바로 연결이 되는 구조였습니다. 

개발을 진행하다 보니 WAS가 추가로 늘어나게 되었고 서버와 LB의 추가 증설 없이 기존 인프라 구조에서 Nginx를 이용한 분기처리를 하자고 결론이 나와서 아래와 같은 구조가 되었습니다.

 

1.  Nginx 도메인 설정

Nginx를 설치하시면 설치하신 방법 또는 버전에 따라 Nginx 디렉토리 구조가 다를 수도 있습니다.

일단 도메인 설정을 하기 위해서는 Nginx 디렉토리 하위에 있는 conf.d 또는 default.d 디렉토리 하위에 도메인 별로 conf파일을 아래와 같이 설정합니다.

 

- server{} 구문 안쪽에서 'server_name  요청 받은 서비스 도메인;' 을 작성

- location / {} 구문 안에 해당 요청을 전달하고자 하는 IP와 Port를 지정한다.

A.domain.com.conf                                                                
server {
        server_name     A.domain.com;
        index index.html index.htm;

        location / {
                proxy_pass http://127.0.0.1:8080;
                add_header Cache-Control $http_cache_control;
                add_header Pragma $http_pragma;
                add_header Expires $http_expires;
        }
}

B.domain.com.conf                                                         
server {
        server_name     B.domain.com;
        index index.html index.htm;

        location / {
                proxy_pass http://127.0.0.1:8081;
                add_header Cache-Control $http_cache_control;
                add_header Pragma $http_pragma;
                add_header Expires $http_expires;
        }
}

C.domain.com.conf                                                     
server {
        server_name     C.domain.com;
        index index.html index.htm;

        location / {
                proxy_pass http://127.0.0.1:8082;
                add_header Cache-Control $http_cache_control;
                add_header Pragma $http_pragma;
                add_header Expires $http_expires;
        }
}

 

2.  생성된 conf 파일 확인

1번과 같이 설정을 하게 되었다면 conf.d 또는 default.d 디렉토리 안에는 A.domain.com.conf, B.domain.com.conf, C.domain.com.conf 이렇게 총 3개의 conf 파일이 생성 되어있어야 한다. 

파일 이름을 각각 도메인으로 맞춘 이유는 해당 conf 파일안에 내용을 추측하기 위해 즉 관리의 편의성을 위해서 보통은 설정하고자하는 도메인명으로 파일을 생성한다.

 

3. Nginx.conf 파일에 include

마지막으로 conf.d 디렉토리 하위에 있는 각 도메인 conf 파일들을 nginx.conf에서 include 시켜줘야한다. 

대부분은 Nginx를 설치하게 되면 nginx.conf 파일에 include /etc/nginx/conf.d/*.conf; 라는 설정으로 자동으로 되어있을것이다.

하지만 해당 문구가 없을 때를 가정하여 nginx.conf 설정 파일 안에 들어가서

http{} 구문 안쪽에 include /etc/nginx/conf.d/*.conf;  명령어를 입력하고 Nginx conf 파일을 reload 하면 설정이 완료 된다.

 

 

이제 각 도메인으로 사이트를 접속을 했을 때 설정을 했던 각 WAS에 접근이 되는지 확인을 하면 모든 설정이 완료가 된다. 

여기서 주의 해야할 점은 기존에 LB가 Nginx가 아닌  A 도메인의 WAS로 직접 붙는 상태였다면 이젠 LB가 Nginx에 붙어야 하는 상황이라 LB 타겟 설정에서도 A 도메인의 WAS에 연결을 시켜주는게 아니라 Nginx에 연결을 시켜줘야 한다. 

ex) 기존 LB 타겟 - 서버IP:8080  -> 변경 후 LB 타겟 - 서버 IP:80 (Nginx의 기본 포트는 80이다.)

'linux' 카테고리의 다른 글

Nginx  (0) 2023.06.04