You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Flask+Waitress网站配置HTTPS?反向代理设置求助

实现Flask+Waitress应用的HTTPS访问(基于Nginx反向代理)

你提到的用Nginx做反向代理来实现HTTPS的思路完全正确——Waitress本身不支持SSL终止,通过反向代理处理加密请求是生产环境的标准方案。以下是具体配置步骤:

一、调整Waitress监听配置

先修改你的Flask代码,让Waitress仅监听本地回环地址,避免直接暴露给公网,所有外部请求由Nginx转发:

from flask import Flask
from waitress import serve

app = Flask(__name__)

@app.route('/')
def home():
    return "hello world"

if __name__ == "__main__":
    # 改为监听本地回环地址,仅接受Nginx的转发请求
    serve(app, host='127.0.0.1', port=5000, url_scheme='https')

二、配置Nginx反向代理

1. 安装Nginx(未安装的话)

根据你的操作系统执行对应命令:

  • Ubuntu/Debian:sudo apt update && sudo apt install nginx
  • CentOS/RHEL:sudo dnf install nginx

2. 创建站点配置文件

新建文件 /etc/nginx/sites-available/macroperspective.net,填入以下内容(替换证书路径为你实际的文件位置):

# 处理HTTPS请求
server {
    listen 443 ssl;
    server_name macroperspective.net;

    # 替换为你的SSL证书和密钥路径
    ssl_certificate /etc/ssl/certs/macroperspective.net.crt;
    ssl_certificate_key /etc/ssl/private/macroperspective.net.key;

    # 基础SSL优化配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        # 转发请求到Waitress运行的本地端口
        proxy_pass http://127.0.0.1:5000;
        # 设置请求头,让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;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

# 自动将HTTP请求重定向到HTTPS
server {
    listen 80;
    server_name macroperspective.net;

    return 301 https://$server_name$request_uri;
}

3. 启用站点并验证配置

  • 创建软链接启用站点:sudo ln -s /etc/nginx/sites-available/macroperspective.net /etc/nginx/sites-enabled/
  • 检查配置语法:sudo nginx -t
  • 重启Nginx生效:sudo systemctl restart nginx

三、启动应用并测试

  • 运行你的Flask应用:python3 your_app.py(替换为你的实际文件名)
  • 访问 https://macroperspective.net,浏览器应显示"hello world"且标记连接为加密状态

关键注意事项

  • 确保SSL密钥文件权限为仅root可读:sudo chmod 600 /etc/ssl/private/macroperspective.net.key
  • 开放服务器防火墙的80和443端口(比如Ubuntu的ufw:sudo ufw allow 80/tcp && sudo ufw allow 443/tcp)
  • 生产环境建议用systemd创建服务文件,实现Waitress进程的开机自启和守护

内容的提问来源于stack exchange,提问作者Willem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 08:48:21