为Elastic Beanstalk单实例Python(FastAPI)应用配置HTTPS遇阻
解决Elastic Beanstalk单实例Python服务HTTPS连接拒绝问题
一、检查安全组与端口监听
- 确认EB实例安全组已开放443端口入站规则,来源范围按需设置(如0.0.0.0/0)
- 登录实例执行命令,检查Apache是否监听443端口:
若无输出,说明Apache配置未生效或端口被占用netstat -tulpn | grep 443
二、验证Apache SSL配置正确性
- 查看Apache SSL配置文件(通常路径为
/etc/httpd/conf.d/ssl.conf或EB生成的自定义配置),确认:SSLCertificateFile指向certbot生成的cert.pem绝对路径(如/etc/letsencrypt/live/你的域名/cert.pem)SSLCertificateKeyFile指向privkey.pem绝对路径- 配置中包含
Listen 443 https指令
- 执行配置语法检查,修复报错:
httpd -t
三、调整证书文件权限
certbot生成的证书默认权限可能限制Apache读取,执行以下命令修正:
sudo chmod 644 /etc/letsencrypt/live/你的域名/*.pem sudo chown root:root /etc/letsencrypt/live/你的域名/*.pem
注意:仅修改live目录下的符号链接文件,不要改动archive目录权限
四、适配ASGI应用的Apache配置
由于使用ASGI入口文件asgi.py,需补充ASGI支持配置:
- 安装对应版本的mod_wsgi ASGI组件:
sudo yum install mod_wsgi-python3 - 在Apache配置中添加ASGI进程配置:
WSGIScriptAlias / /opt/python/current/app/asgi.py process-group=asgi application-group=%{GLOBAL} WSGIDaemonProcess asgi python-path=/opt/python/current/app python-home=/opt/python/run/venv WSGIProcessGroup asgi - 确认EB环境变量中
WSGIPath已设置为asgi.py
五、通过日志定位深层问题
- 查看Apache错误日志,获取HTTPS启动失败细节:
tail -n 50 /var/log/httpd/error_log - 查看EB部署日志,验证配置文件是否正确加载:
tail -n 100 /var/log/eb-engine.log
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

