Windows Server環(huán)境下使用Nginx部署Flask應(yīng)用的全過程
更新時間:2025年04月24日 09:28:59 作者:老胖閑聊
Flask是一個輕量級的Python Web框架,它允許開發(fā)者快速搭建Web應(yīng)用或服務(wù),Nginx是一款高性能的HTTP和反向代理服務(wù)器,用于部署靜態(tài)文件服務(wù)、負載均衡以及作為HTTP緩存等,本文給大家介紹了Windows Server環(huán)境下使用Nginx部署Flask應(yīng)用的全過程,需要的朋友可以參考下
1. 環(huán)境準備
- 操作系統(tǒng): Windows Server 2016/2019/2022
- Python: 安裝最新穩(wěn)定版(如 Python 3.10+),確保勾選
Add Python to PATH。 - Nginx for Windows: 從 官網(wǎng) 下載 Windows 版本(如 nginx/Windows-1.25.3)。
- 依賴工具: Git(可選,用于代碼拉?。?、文本編輯器(如 VS Code)。
2. 創(chuàng)建 Flask 應(yīng)用
2.1 項目結(jié)構(gòu)
C:\flask-app\ ├── app.py # Flask 主程序 ├── requirements.txt ├── static\ # 靜態(tài)文件 └── venv\ # Python 虛擬環(huán)境
2.2 示例 app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, World! Flask on Windows Server with Nginx!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
2.3 安裝依賴
# 創(chuàng)建虛擬環(huán)境 python -m venv venv venv\Scripts\activate # 安裝 Flask 和 Waitress(生產(chǎn)級 WSGI 服務(wù)器) pip install flask waitress
3. 使用 Waitress 啟動 Flask
3.1 啟動命令
waitress-serve --port=5000 --threads=4 app:app
- 參數(shù)說明:
--port: 監(jiān)聽端口--threads: 線程數(shù)(根據(jù) CPU 核心調(diào)整)
3.2 創(chuàng)建啟動腳本 start_server.bat
@echo off call venv\Scripts\activate waitress-serve --port=5000 --threads=4 app:app
4. 配置 Nginx 反向代理
4.1 修改 Nginx 配置文件 nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
# 反向代理配置
upstream flask_app {
server 127.0.0.1:5000; # Waitress 監(jiān)聽地址
}
server {
listen 80;
server_name your_domain.com; # 替換為域名或服務(wù)器 IP
# 靜態(tài)文件處理(由 Nginx 直接代理)
location /static {
alias C:/flask-app/static; # 替換為實際路徑
expires 30d;
}
# 動態(tài)請求代理到 Flask
location / {
proxy_pass http://flask_app;
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;
}
}
}
4.2 啟動 Nginx
# 檢查配置語法 nginx -t # 啟動 Nginx start nginx # 重啟(修改配置后) nginx -s reload
5. 配置 Windows 服務(wù)(開機自啟)
5.1 使用 NSSM 工具(推薦)
- 下載 nssm.exe
- 注冊 Nginx 服務(wù):
nssm install Nginx "C:\nginx\nginx.exe" # 替換為 Nginx 實際路徑 nssm start Nginx
- 注冊 Waitress 服務(wù):
nssm install FlaskApp "C:\flask-app\venv\Scripts\python.exe" "C:\flask-app\venv\Scripts\waitress-serve.exe" --port=5000 app:app nssm start FlaskApp
6. 常見問題與解決方案
6.1 端口沖突
- 錯誤:
bind() to 0.0.0.0:5000 failed: 僅允許使用一個套接字地址 - 解決: 檢查是否有其他程序占用端口,使用
netstat -ano | findstr :5000并終止進程。
6.2 靜態(tài)文件 404
- 錯誤: 瀏覽器無法加載
/static/style.css - 解決: 確保 Nginx 配置中的
alias路徑使用正斜杠(C:/flask-app/static),且目錄存在。
6.3 Nginx 502 Bad Gateway
- 原因: Nginx 無法連接后端 Flask 服務(wù)。
- 排查:
- 檢查 Waitress 是否運行 (
tasklist | findstr waitress)。 - 檢查防火墻是否允許端口 5000。
- 檢查 Waitress 是否運行 (
7. 擴展知識
7.1 啟用 HTTPS
- 使用 Let’s Encrypt 獲取免費證書(需域名)。
- 修改 Nginx 配置:
server {
listen 443 ssl;
ssl_certificate C:/ssl/your_domain.crt;
ssl_certificate_key C:/ssl/your_domain.key;
# ... 其他配置
}
7.2 負載均衡
upstream flask_app {
server 127.0.0.1:5000;
server 127.0.0.1:5001; # 啟動第二個實例
least_conn; # 使用最少連接算法
}
8. 注意事項
- 生產(chǎn)環(huán)境禁用調(diào)試模式: 確保 Flask 的
app.run(debug=False)。 - 日志管理: 配置 Nginx 和 Flask 的日志路徑,定期歸檔。
- 備份配置: 修改關(guān)鍵文件前備份(如
nginx.conf)。
通過以上步驟, Flask 應(yīng)用將在 Windows Server 上以高可靠性的方式運行,并通過 Nginx 實現(xiàn)高效反向代理和靜態(tài)資源加速。
以上就是Windows Server環(huán)境下使用Nginx部署Flask應(yīng)用的全過程的詳細內(nèi)容,更多關(guān)于Nginx部署Flask應(yīng)用的資料請關(guān)注腳本之家其它相關(guān)文章!
您可能感興趣的文章:
- flask應(yīng)用部署到服務(wù)器的方法
- centos 7.0 使用Nginx部署flask應(yīng)用教程
- Docker部署Flask應(yīng)用的實現(xiàn)步驟
- 使用Docker部署Python Flask應(yīng)用的完整教程
- 使用Docker部署Nginx+Flask+Mongo的應(yīng)用
- 本地部署Python?Flask并搭建web問答應(yīng)用程序框架實現(xiàn)遠程訪問的操作方法
- 在DigitalOcean的服務(wù)器上部署flaskblog應(yīng)用
- 在Ubuntu上部署Flask應(yīng)用的流程步驟
- Flask應(yīng)用部署與多端口管理實踐全指南
- Flask常見應(yīng)用部署方案詳解
相關(guān)文章
Nginx服務(wù)器屏蔽與禁止屏蔽網(wǎng)絡(luò)爬蟲的方法
今天小編就為大家分享一篇關(guān)于Nginx服務(wù)器屏蔽與禁止屏蔽網(wǎng)絡(luò)爬蟲的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03
Nginx重定向后請求參數(shù)丟失的原因分析及解決方案
在日常開發(fā)和運維中,我們經(jīng)常會遇到需要使用 Nginx 進行反向代理的場景,但在配置 proxy_pass 時,有時候可能會遇到請求參數(shù)丟失的問題,在這篇文章中,我們將會詳細探討這個問題并給出幾種解決方案,需要的朋友可以參考下2023-11-11
keepalived結(jié)合nginx實現(xiàn)nginx高可用的方法
這篇文章主要介紹了keepalived結(jié)合nginx實現(xiàn)nginx高可用的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03

