Nginx와 Gunicorn이란 무엇인가?

찬민·2024년 9월 18일
0

TIL

목록 보기
54/62

1. Nginx란?

server {
    listen 80;
    server_name example.com;
    
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Nginx는 웹 서버 소프트웨어로, 주로 정적 파일(이미지, CSS, JavaScript 등)을 처리하고, 동적 요청을 애플리케이션 서버로 전달하는 역할을 한다. 예를 들어, Django와 같은 웹 애플리케이션은 보통 정적 파일을 처리하지 않기 때문에, Nginx를 사용하여 정적 파일을 효율적으로 제공할 수 있다. 또한, Nginx로드 밸런싱리버스 프록시 기능도 제공한다.

2. Gunicorn이란?

gunicorn --workers 3 myproject.wsgi:application

Gunicorn은 Python WSGI HTTP 서버로, Django와 같은 웹 애플리케이션을 배포할 때 사용된다. 이는 애플리케이션 서버 역할을 하며, Nginx와 함께 사용되어 웹 요청을 처리한다. Gunicorn은 멀티프로세스 방식으로 작동하며, 여러 워커(Worker)를 통해 동시에 많은 요청을 처리할 수 있게 해준다.

3. Nginx와 Gunicorn의 관계

Nginx와 Gunicorn은 웹 애플리케이션 서버와 클라이언트 간의 효율적인 통신을 위해 함께 사용된다. 클라이언트가 HTTP 요청을 보내면 Nginx가 먼저 해당 요청을 받아 정적 파일을 처리하고, 동적 요청은 Gunicorn으로 전달하여 처리한다. 그 후, Gunicorn에서 처리된 응답을 다시 Nginx가 받아 클라이언트에게 응답하는 구조이다. 이처럼 Nginx는 정적 파일 처리와 리버스 프록시 역할을 수행하고, Gunicorn은 실제 애플리케이션 로직을 처리하는 데 집중한다.

4. Gunicorn 설정 예시

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/myproject
ExecStart=/home/ubuntu/myproject/myenv/bin/gunicorn --workers 3 --bind unix:/home/ubuntu/myproject/myproject.sock myproject.wsgi:application

[Install]
WantedBy=multi-user.target

Gunicorn을 시스템 서비스로 설정하여 애플리케이션 서버를 지속적으로 실행할 수 있다.

0개의 댓글