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

Flask配合Waitress+Nginx配置SSL部署HTTPS服务无法访问问题求助

问题修复方案

1. 修复Nginx配置冲突

你配置中监听5000端口的server块完全多余,且会和本地运行的Waitress服务抢占端口,直接删除该段配置即可:

# 删掉这段完全无用的配置
server {
    listen 5000;
    server_name 127.0.0.1;
    return 302 https://$server_name$request_uri;
}

同时补充反向代理必要的头部配置,保证Flask能正确识别客户端请求信息,调整后的443端口配置如下:

server {
    listen 443 ssl;
    # 证书请使用绝对路径,不要用相对路径,避免Nginx读取失败
    ssl_certificate /绝对路径/cert.pem;
    ssl_certificate_key /绝对路径/key.pem;
    server_name 127.0.0.1;
    location / {
        proxy_pass http://127.0.0.1:5000;
        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;
    }
}

2. 生效Nginx配置并检查合法性

你之前只做了配置文件软链接,没有验证配置合法性也没有重载Nginx,依次执行以下命令:

# 检查Nginx配置是否有语法错误、证书是否能正常读取
sudo nginx -t
# 确认上一步输出success后,重载Nginx配置
sudo systemctl reload nginx

如果nginx -t报错提示证书权限不足,给证书文件加读权限即可:

sudo chmod 644 /你的证书绝对路径/cert.pem /你的证书绝对路径/key.pem

3. 修复Flask启动参数

你使用Nginx做SSL终止,Nginx和Waitress之间是HTTP通信,不需要给Waitress加url_scheme='https'参数,调整启动代码:

if __name__ == "__main__":
    logger = logging.getLogger('waitress')
    logger.setLevel(logging.INFO)
    # 删掉url_scheme='https'参数
    serve(app, host='127.0.0.1', port=5000)

4. 验证服务状态

  • 先确认Waitress服务正常启动,没有端口占用报错
  • 本地访问https://127.0.0.1时,如果是自签证书浏览器会弹出安全警告,手动信任证书即可正常访问,不属于服务异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:48:03