AWS Elastic Beanstalk AL2 Python3.7 Flask应用Nginx配置异常超时求助
问题排查及解决步骤
- 首先确认你的Elastic Beanstalk运行的平台版本:
如果是Amazon Linux 2版本的Python平台,旧的.ebextensions目录下的Nginx配置规则已经不再生效,需要把配置文件放到.platform/nginx/conf.d/路径下,项目目录结构参考如下:你的项目根目录 ├── application.py ├── .ebextensions/ │ └── application.config └── .platform/ └── nginx/ └── conf.d/ └── myconf.conf - 修正你的Nginx配置内容:
你当前的配置写了完整的server块,会和EB默认生成的监听80端口的server块冲突,不需要套server层,只保留location规则即可,myconf.conf内容修改为:location / { proxy_pass http://127.0.0.1:8000; proxy_http_version 1.1; proxy_set_header Connection $connection_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } - 先排除应用本身故障:
可以通过SSH登录到EB实例,执行命令curl http://127.0.0.1:8000,如果能拿到预期的响应,说明Flask应用运行正常,问题确实出在Nginx转发层;如果请求无响应,优先检查Flask应用代码逻辑。 - 验证Nginx配置是否生效:
登录EB实例后,首先查看/etc/nginx/conf.d/目录下是否存在你上传的myconf.conf文件,再执行sudo nginx -t测试配置是否有语法错误,若测试通过执行sudo systemctl reload nginx重载配置。同时可以查看Nginx错误日志排查具体报错,日志路径为/var/log/nginx/error.log。 - 检查实例安全组规则:
确认EB关联的EC2实例安全组已经开放80(HTTP)和443(HTTPS)端口的入站规则,源地址设置为你访问的IP或者0.0.0.0/0(公网访问场景)。
内容的提问来源于stack exchange,提问作者John Christian
相关产品推荐
相关产品推荐

