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

如何配置Apache实现HTTPS正常访问已部署的Flask应用?

问题根因

当前Apache配置仅在80端口(HTTP协议)的虚拟主机块中配置了mod_wsgi对应的Flask应用转发规则,443端口(HTTPS协议)的虚拟主机块没有同步对应配置,HTTPS请求会直接命中Apache默认站点规则,因此返回默认欢迎页。

修复步骤
  • 定位Apache虚拟主机配置目录,常见路径为/etc/httpd/conf.d/(CentOS/RHEL系列发行版)或/etc/apache2/sites-available/(Debian/Ubuntu系列发行版)
  • 打开配置了自签名证书的HTTPS虚拟主机配置文件(通常文件名包含ssl、443关键字,例如example.com-ssl.conf)
  • 将80端口HTTP虚拟主机中所有和Flask应用相关的mod_wsgi配置,完整复制到<VirtualHost *:443>配置块内部,和已有的证书配置项保持同级。需要同步的配置项和你HTTP站点里已写的配置保持一致即可,不需要修改参数,参考结构如下:
# WSGI进程配置
WSGIDaemonProcess flaskapp python-home=/你的Flask虚拟环境绝对路径 user=apache group=apache threads=5
# 脚本路由映射
WSGIScriptAlias / /你的Flask项目绝对路径/wsgi.py process-group=flaskapp
# 项目目录权限配置
<Directory /你的Flask项目绝对路径>
    Require all granted
</Directory>
# 若配置了静态文件映射,需一并复制
Alias /static/ /你的Flask项目绝对路径/static/
<Directory /你的Flask项目绝对路径/static>
    Require all granted
</Directory>
  • 配置修改完成后先执行语法校验,避免配置错误导致服务中断:
    • CentOS/RHEL系列:执行httpd -t
    • Debian/Ubuntu系列:执行apache2ctl configtest
  • 校验返回Syntax OK后重启Apache服务让配置生效:
    • CentOS/RHEL系列:执行systemctl restart httpd
    • Debian/Ubuntu系列:执行systemctl restart apache2

注意:不要将WSGI相关配置写在<VirtualHost>块外部,这类全局配置仅会对默认匹配的站点生效,无法同时覆盖HTTP、HTTPS两个独立的虚拟主机。如果后续需要将所有HTTP请求自动跳转至HTTPS,只需在80端口虚拟主机中添加跳转规则即可,不需要重复配置WSGI代理规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:54:26