当前位置: 代码网 > 科技>操作系统>Windows > Windows Server环境下使用Nginx部署Flask应用的全过程

Windows Server环境下使用Nginx部署Flask应用的全过程

2025年04月24日 Windows 我要评论
1. 环境准备操作系统: windows server 2016/2019/2022python: 安装最新稳定版(如 python 3.10+),确保勾选add python to path。ngi

1. 环境准备

  1. 操作系统: windows server 2016/2019/2022
  2. python: 安装最新稳定版(如 python 3.10+),确保勾选 add python to path
  3. nginx for windows: 从 官网 下载 windows 版本(如 nginx/windows-1.25.3)。
  4. 依赖工具: git(可选,用于代码拉取)、文本编辑器(如 vs code)。

2. 创建 flask 应用

2.1 项目结构

c:\flask-app\
   ├── app.py          # flask 主程序
   ├── requirements.txt
   ├── static\         # 静态文件
   └── venv\           # python 虚拟环境

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 安装依赖

# 创建虚拟环境
python -m venv venv
venv\scripts\activate

# 安装 flask 和 waitress(生产级 wsgi 服务器)
pip install flask waitress

3. 使用 waitress 启动 flask

3.1 启动命令

waitress-serve --port=5000 --threads=4 app:app
  • 参数说明:
    • --port: 监听端口
    • --threads: 线程数(根据 cpu 核心调整)

3.2 创建启动脚本 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 监听地址
    }

    server {
        listen       80;
        server_name  your_domain.com;  # 替换为域名或服务器 ip

        # 静态文件处理(由 nginx 直接代理)
        location /static {
            alias c:/flask-app/static;  # 替换为实际路径
            expires 30d;
        }

        # 动态请求代理到 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 服务(开机自启)

5.1 使用 nssm 工具(推荐)

nssm install nginx "c:\nginx\nginx.exe"  # 替换为 nginx 实际路径
nssm start nginx
  • 注册 waitress 服务:
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 静态文件 404

  • 错误: 浏览器无法加载 /static/style.css
  • 解决: 确保 nginx 配置中的 alias 路径使用正斜杠(c:/flask-app/static),且目录存在。

6.3 nginx 502 bad gateway

  • 原因: nginx 无法连接后端 flask 服务。
  • 排查:
    1. 检查 waitress 是否运行 (tasklist | findstr waitress)。
    2. 检查防火墙是否允许端口 5000。

7. 扩展知识

7.1 启用 https

  1. 使用 let’s encrypt 获取免费证书(需域名)。
  2. 修改 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. 注意事项

  1. 生产环境禁用调试模式: 确保 flask 的 app.run(debug=false)
  2. 日志管理: 配置 nginx 和 flask 的日志路径,定期归档。
  3. 备份配置: 修改关键文件前备份(如 nginx.conf)。

通过以上步骤, flask 应用将在 windows server 上以高可靠性的方式运行,并通过 nginx 实现高效反向代理和静态资源加速。

以上就是windows server环境下使用nginx部署flask应用的全过程的详细内容,更多关于nginx部署flask应用的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com