Web Server

Nginx

Somaz 2022. 2. 9. 10:33
728x90
반응형

 

Overview

이 글에서는 Nginx에 대해 알아보고, 설치부터 기본 설정 및 활용법까지 다룰 것이다.
Nginx는 빠르고 가벼운 웹 서버이면서도 Reverse Proxy로드 밸런서 역할을 수행할 수 있어
많은 기업에서 애플리케이션 배포에 필수적으로 사용된다.

 

 

 

 

 


 

 

Nginx란?

Nginx (Engine-X)빠르고 가벼운 웹 서버로, 다양한 목적으로 활용된다.

 

 

 

Nginx 주요 기능

 

 

1️⃣ 정적 파일 웹 서버 (HTTP Web Server)

  • 클라이언트 요청을 받아 정적 파일(HTML, CSS, JS 등)을 제공한다.

 

2️⃣ Reverse Proxy (리버스 프록시)

  • 클라이언트 요청을 받아 백엔드 서버(WAS)에 전달하는 역할
  • 부하 분산(로드 밸런싱) 기능을 수행할 수 있음

 

3️⃣ 로드 밸런서 (Load Balancer)

  • 여러 서버(WAS)로 트래픽을 분산하여 서버 부하를 줄인다.

 

4️⃣ 캐싱 (Caching)

  • 자주 요청되는 데이터를 캐싱하여 성능 향상 가능

 

5️⃣ SSL/TLS 지원 (HTTPS)

  • SSL/TLS를 활용하여 보안 강화 가능

 

 

 

 

Nginx 설치 및 설정

 

1️⃣ Nginx 저장소 설정 (CentOS 7 기준)

 

기본적으로 CentOS의 기본 저장소에는 Nginx 패키지가 포함되지 않음
따라서 Nginx 공식 저장소를 추가해야 한다.

# 저장소 설정 디렉터리 이동
cd /etc/yum.repos.d/

# Nginx 저장소 파일 생성
vi nginx.repo

 

 

다음 내용을 입력한다.

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch
gpgcheck=0
enabled=1

 

이제 CentOS에서 Nginx 패키지를 설치할 수 있다!

 

 

 

2️⃣ Nginx 패키지 설치 및 방화벽 설정

 
# Nginx 패키지 설치
yum -y install nginx-*

# 방화벽에 8080 포트 추가 (기본적으로 80 포트 사용)
firewall-cmd --permanent --add-port=8080/tcp

# 방화벽 설정 적용
firewall-cmd --reload

 

Nginx가 정상적으로 설치되었으며, 8080 포트도 열려 있다.

 

 

 

3️⃣ Nginx 서비스 시작 및 활성화

 
# Nginx 서비스 활성화 (재부팅 후에도 자동 실행됨)
systemctl enable nginx

# Nginx 서비스 시작
systemctl start nginx

# Nginx 상태 확인
systemctl status nginx
 

Nginx가 실행 중이면 성공! 

 

 

 

4️⃣ Nginx 기본 설정 변경

 

Nginx의 기본 설정 파일은 `/etc/nginx/nginx.conf` 또는 `/etc/nginx/conf.d/default.conf` 에 위치한다.
이제 8080 포트에서 Nginx가 실행되도록 수정해보자.

# 설정 파일 위치 이동
cd /etc/nginx/conf.d/

# 기본 설정 파일 편집
vi default.conf

 

 

다음과 같이 설정을 변경한다.

server {
    listen       8080;   # 포트 변경 (기본: 80)
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

 

 

 

수정 완료 후 Nginx 재시작

systemctl restart nginx

 

 

 

웹 브라우저에서 `http://<서버IP>:8080` 으로 접속하면 Nginx 기본 페이지가 출력된다.

 

 

 


 

 

 

 

 

 

Nginx 주요 설정 옵션

 

Nginx는 다양한 설정 옵션을 제공하며, 주요 옵션을 정리해보았다.

옵션 설명
listen 80; 서버가 수신할 포트 지정
server_name example.com; 도메인 또는 IP 주소 지정
root /var/www/html; 웹 서버의 기본 디렉토리
index index.html index.htm; 기본 파일 설정
location / 특정 URL 요청을 처리하는 블록

 

이제 Nginx를 기본적인 웹 서버로 활용할 준비가 완료되었다.

 

 

 

 

 

Nginx 추가 활용법

 

1️⃣ Reverse Proxy 설정

 
server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

 

이제 Nginx가 5000번 포트에서 실행되는 애플리케이션(WAS)과 연결된다.

 

 

 

2️⃣ 로드 밸런싱 (Load Balancing) 설정

 
upstream backend_servers {
    server 192.168.1.10;
    server 192.168.1.11;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_servers;
    }
}

 

이제 요청이 여러 개의 서버로 분산된다.

 

 

 

3️⃣ HTTPS 적용 (SSL/TLS 설정)

 

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;

    location / {
        root /var/www/html;
    }
}

 

SSL/TLS를 적용하여 HTTPS를 활성화할 수 있다.

 

 

 


 

 

 

 

 

 

Nginx 실전 활용 예제

 

정적 웹사이트 호스팅

server {
    listen 80;
    server_name example.com;

    location / {
        root /var/www/html;
        index index.html;
    }
}

 

HTML, CSS, JS 파일을 배포하는 간단한 정적 웹 서버로 사용 가능

 

 

 

 

Node.js + Nginx 연동

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
    }
}

 

Node.js 애플리케이션을 Nginx를 통해 서비스 가능

 

 

 

 

 


 

 

 

 

 

 

마무리

Nginx가 무엇인지 개념을 익혔다.
Nginx를 설치하고 기본 설정을 완료하였다.
Reverse Proxy 및 Load Balancer 기능을 활용할 수 있다.
HTTPS 및 웹사이트 호스팅을 위한 설정도 가능하다.

 

 

이제 Nginx를 활용하여 더욱 강력한 웹 서버 환경을 구축해보자!

 

 

 

 

 


Reference

Nginx 공식 문서
Nginx GitHub Repository
Nginx 설정 예제

 

 

 

728x90
반응형