웹 개발을 처음 시작하면 Flask, Waitress, Nginx 같은 용어들이 어렵게 느껴질 수 있습니다.
하지만 이 3가지가 어떻게 연관되어 동작하는지를 이해하면, Flask 웹 애플리케이션을 운영하는 기본 구조를 쉽게 파악할 수 있습니다!
오늘은 Flask, Waitress, Nginx가 각각 무엇인지 그리고 이 3가지가 어떻게 함께 동작하는지 초보자도 이해할 수 있도록 쉽게 설명해볼게요.
1️⃣ Flask – 웹 애플리케이션을 만드는 핵심 프레임워크
Flask는 Python으로 만든 웹 애플리케이션 프레임워크입니다.
👉 쉽게 말하면, 웹사이트를 만들 수 있는 Python 도구라고 보면 됩니다.
✅ Flask의 특징
- 가볍고 빠름 → 간단한 코드로 웹 애플리케이션을 만들 수 있음
- REST API 개발에 적합 → 백엔드 서버 만들 때 많이 사용됨
- 확장성이 뛰어남 → 필요에 따라 기능을 추가 가능
예제 코드 – Flask로 간단한 웹 서버 만들기
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, Flask!"
if __name__ == '__main__':
app.run(port=5000)
👉 실행하면 http://127.0.0.1:5000/
에서 “Hello, Flask!”가 출력됨
하지만! 이 Flask 기본 서버는 개발용이라 성능이 낮고, 운영 환경에서는 직접 사용하기 어렵습니다.
그래서 Flask를 안정적으로 실행하기 위해 Waitress 같은 WSGI 서버가 필요합니다!
2️⃣ Waitress – Flask를 안정적으로 실행하는 WSGI 서버
❓ Waitress는 뭐 하는 역할일까?
Flask에는 자체 실행 서버(app.run()
)가 있지만, 이 서버는 트래픽이 많아지면 쉽게 느려집니다.
그래서 운영 환경에서는 Flask를 실행할 때 Waitress 같은 WSGI 서버를 사용합니다.
✅ Waitress의 역할
- Flask 서버를 더 안정적으로 실행 (여러 요청을 동시에 처리 가능)
- 운영 환경에서 적합한 성능 제공 (Flask 기본 서버보다 더 빠름)
- Windows에서도 쉽게 사용 가능 (Gunicorn은 Linux 전용이라, Windows 환경에서는 Waitress가 더 좋음)
from waitress import serve
from my_flask_app import app # Flask 앱을 불러옴
serve(app, host="127.0.0.1", port=5000, threads=8)
👉 실행하면 Flask 서버가 더 안정적으로 실행됨!
하지만! 이렇게 실행하면 웹사이트에 접속하는 사용자가 많아질 경우 속도가 느려질 수 있음.
그래서 트래픽을 관리하고 보안도 강화하기 위해 Nginx를 사용합니다.
3️⃣ Nginx – 트래픽을 관리하는 웹 서버
❓ Nginx는 무엇을 하는 걸까?
Nginx는 웹 브라우저에서 오는 요청을 받아서 적절한 서버로 전달하는 역할을 합니다.
쉽게 말하면, Flask 서버 앞에 서서 요청을 정리해주는 문지기 역할을 합니다! 🚪
✅ Nginx의 역할
- 사용자 요청을 Waitress(Flask)로 전달
- 많은 트래픽을 효율적으로 분배
- 정적인 파일 (이미지, CSS, JavaScript 등) 빠르게 제공
- 보안 강화 (HTTPS 적용, 방화벽 역할 등)
📌 예제 – Nginx가 Flask 서버로 요청을 넘겨주는 설정
(파일 위치: /etc/nginx/sites-enabled/default
또는 /etc/nginx/nginx.conf
)
server {
listen 80;
server_name mywebsite.com;
location / {
proxy_pass http://127.0.0.1:5000; # Waitress(Flask) 서버로 요청 전달
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
👉 이렇게 설정하면, mywebsite.com
에 접속한 요청이 Flask 서버(Waitress)로 전달됨!
4️⃣ Flask + Waitress + Nginx – 실제로 어떻게 동작할까?
이제 Flask, Waitress, Nginx가 어떻게 연관되어 동작하는지 한 번 정리해볼게요.
📌 요청이 처리되는 과정
✅ 1️⃣ 사용자가 브라우저에서 http://mywebsite.com
을 입력
✅ 2️⃣ Nginx가 요청을 받아서 127.0.0.1:5000
(Waitress 서버)로 전달
✅ 3️⃣ Waitress가 요청을 받아서 Flask 애플리케이션을 실행
✅ 4️⃣ Flask가 결과를 생성해서 Waitress에 전달
✅ 5️⃣ Waitress가 결과를 Nginx에 넘겨줌
✅ 6️⃣ Nginx가 브라우저에 최종 응답을 반환
🚀 정리 – Flask, Waitress, Nginx는 이렇게 동작한다!
역할 | 설명 |
---|---|
Flask | 웹 애플리케이션을 실행하는 Python 프레임워크 |
Waitress | Flask를 안정적으로 실행하는 WSGI 서버 |
Nginx | 트래픽을 관리하고 Flask 서버로 요청을 넘겨주는 웹 서버 |
📌 운영 환경에서 Flask를 실행하는 최적의 방법 1️⃣ Flask로 웹 애플리케이션 개발
2️⃣ Waitress를 사용해 Flask를 운영 환경에서 실행
3️⃣ Nginx를 앞단에 두고 트래픽 관리 및 보안 강화
이제 Flask, Waitress, Nginx가 어떻게 연관되어 동작하는지 이해하셨나요?
이 방법을 사용하면 Flask 웹사이트를 빠르고 안정적으로 운영할 수 있습니다! 🚀🚀🚀