DevOps 환경에서의 효율적인 서비스 운영을 위해, 애플리케이션과 서버 간의 요청을 관리하는 리버스 프록시 서버를 설정하는 것은 매우 중요합니다. Nginx는 가볍고 강력한 웹 서버이자 리버스 프록시로 널리 사용되고 있습니다. 이 글에서는 Nginx를 활용한 리버스 프록시 설정 방법에 대해 자세히 알아보겠습니다.

Nginx 설치

Nginx를 설치하는 방법은 운영 체제에 따라 다를 수 있습니다. 여기서는 Ubuntu를 기준으로 설명하겠습니다.

sudo apt update
sudo apt install nginx

설치가 완료되면 Nginx 서비스를 시작하고, 부팅 시 자동으로 시작되도록 설정합니다.

sudo systemctl start nginx
sudo systemctl enable nginx

이제 Nginx가 정상적으로 실행되고 있는지 확인해보세요. 웹 브라우저에서 http://localhost에 접속하면 "Welcome to nginx!"라는 페이지가 표시됩니다.

리버스 프록시 설정

리버스 프록시는 클라이언트의 요청을 받아 다른 서버로 전달하고, 해당 서버의 응답을 클라이언트에게 전달하는 역할을 합니다. 이 방식은 여러 서비스와 애플리케이션을 단일 도메인에서 관리할 수 있게 도와줍니다.

  1. Nginx 설정 파일 열기
  2. Nginx의 설정 파일은 /etc/nginx/sites-available/default에 위치해 있습니다. 이 파일을 열어 수정합니다.

    sudo nano /etc/nginx/sites-available/default
  3. 리버스 프록시 설정 추가
  4. 기본 서버 블록 아래에 리버스 프록시 설정을 추가합니다. 예를 들어, http://localhost:3000에서 실행 중인 Node.js 애플리케이션에 대한 리버스 프록시를 설정해보겠습니다.

    server {
        listen 80;
    
        server_name your_domain.com; # 여기에 도메인을 입력하세요.
    
        location / {
            proxy_pass http://localhost:3000;  # 리버스 프록시 대상
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    }

    위 설정에서 proxy_pass 지시어는 요청을 어디로 전달할지를 결정합니다. 추가적인 헤더 설정은 클라이언트와 서버 간의 원활한 통신을 위한 것입니다.

  5. 설정 테스트 및 재시작
  6. Nginx 설정을 저장한 후, 설정 파일에 오류가 없는지 테스트합니다.

    sudo nginx -t

    오류가 없다면 Nginx 서비스를 재시작합니다.

    sudo systemctl restart nginx

    SSL 적용 (선택 사항)

    리버스 프록시 서버를 운영할 때 SSL을 적용하는 것은 필수적입니다. Let's Encrypt를 사용하여 무료로 SSL 인증서를 발급받을 수 있습니다.

  7. Certbot 설치
  8. sudo apt install certbot python3-certbot-nginx
  9. SSL 인증서 발급
sudo certbot --nginx -d your_domain.com

위 명령어는 Nginx 설정을 자동으로 수정하여 SSL을 적용합니다. 인증서를 갱신하기 위해 다음 명령어를 주기적으로 실행할 수 있습니다.

sudo certbot renew

모니터링 및 로깅

리버스 프록시 서버를 운영할 때는 모니터링과 로깅도 중요합니다. Nginx는 기본적으로 접근 로그와 에러 로그를 지원합니다. 이를 통해 요청의 상태를 모니터링하고 문제를 해결할 수 있습니다.

로그 파일은 /var/log/nginx/access.log와 /var/log/nginx/error.log에 위치해 있습니다.

tail -f /var/log/nginx/access.log

위 명령어를 통해 실시간으로 접근 로그를 확인할 수 있습니다.

마무리

Nginx를 활용한 리버스 프록시 설정은DevOps 환경에서 다양한 서비스와 애플리케이션을 한 곳에서 효과적으로 관리할 수 있게 해줍니다. 기본적인 설정 외에도 SSL을 적용하고, 모니터링 및 로깅 기능을 활용하여 안정적인 서비스를 유지할 수 있습니다. 본 가이드를 통해 Nginx의 리버스 프록시 설정 방법을 이해하고, 실무에 적용해보시기 바랍니다.