본문 바로가기

WEB/Nginx

[Nginx]proxy_pass 설정 - 여러 서비스에 도메인 설정하기

목적

하나의 서버에서 여러 서비스를 동작시킬 때, 각 서비스는 다른 포트를 사용합니다. 이때, 특정 도메인을 통해 서비스에 접근하려면 Nginx의 proxy_pass 설정을 사용하여 도메인과 포트를 연결해야 합니다.

예시

한 서버에서 두 개의 서비스인 zabbix와 grafana를 운영한다고 가정해봅시다.

  • zabbix → 80 port
  • grafana → 3000 port

이렇게 각각 다른 포트에서 동작 중인 서비스에 도메인을 연결해주기 위한 Nginx 설정은 아래와 같습니다:

Grafana에 대한 설정 (/etc/nginx/conf.d/grafana.conf)

server {
        listen   80;
        listen   [::]:80 ipv6only=on;
        server_name  grafana.jeff.com;

        access_log  off;

        location / {
                proxy_pass <http://127.0.0.1:3000>;
                proxy_set_header Host $http_host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;
        }

}

Zabbix에 대한 설정 (/etc/nginx/conf.d/zabbix.conf)

server {
        listen   80;
        listen   [::]:80 ipv6only=on;
        server_name  zabbix.jeff.com;

        access_log  off;

        location / {
                proxy_pass <http://127.0.0.1:80>;
                proxy_set_header Host $http_host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;
        }

}

설정 후 확인

Nginx 설정에 문제가 없는지 문법 검사를 합니다.

nginx -t

문제가 없다면, Nginx를 리로드하여 변경한 설정을 적용합니다.

nginx -s reload

서버의 IP 주소를 /etc/hosts 파일에 등록하거나 DNS에 등록합니다.

브라우저에서 zabbix.jeff.comgrafana.jeff.com 주소를 입력하면 각각 서버IP:80서버IP:3000으로 연결되는 것을 확인할 수 있습니다.