AWS Elastic Beanstalk - python 的 nginx 配置(AL2 上的 3.7)flask 应用程序

Posted

技术标签:

【中文标题】AWS Elastic Beanstalk - python 的 nginx 配置(AL2 上的 3.7)flask 应用程序【英文标题】:AWS Elastic Beanstalk - nginx configuration for python (3.7 on AL2) flask app 【发布时间】:2022-01-06 23:16:07 【问题描述】:

我正在尝试使用 nginx 服务器在弹性 beanstalk 上运行一个简单的烧瓶 (python) 应用程序。

python 应用程序似乎可以在我的 .ebextensions application.config 中使用以下配置启动:

option_settings:
  "aws:elasticbeanstalk:container:python":
    WSGIPath: application:application

gunicorn 似乎可以将自己绑定到应用程序 - 请参阅:

Nov 30 07:40:00 ip-172-31-19-88 web: [2021-11-30 07:40:00 +0000] [32041] [INFO] Starting gunicorn 20.1.0
Nov 30 07:40:00 ip-172-31-19-88 web: [2021-11-30 07:40:00 +0000] [32041] [INFO] Listening at: http://127.0.0.1:8000 (32041)
Nov 30 07:40:00 ip-172-31-19-88 web: [2021-11-30 07:40:00 +0000] [32041] [INFO] Using worker: gthread
Nov 30 07:40:00 ip-172-31-19-88 web: [2021-11-30 07:40:00 +0000] [32098] [INFO] Booting worker with pid: 32098

当我访问网址时,浏览器会挂起很长时间(几分钟),最终超时并显示“响应时间太长”。

我认为这与 NGINX 配置未正确代理请求有关 - 所以我尝试将以下内容添加到 .ebextensions/nginx/conf.d/myconf.conf

server 
      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;
      

但这似乎没有任何作用。

关于问题可能是什么的任何想法?我不确定它的 NGINX,但它似乎确实在发生问题的那一层......网络服务器似乎不知道如何处理我的网络请求。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

.ebextensions/nginx/conf.d/myconf.conf路径不正确。在 AL2 上,nginx should be customized 使用 .platform/nginx/conf.d/.platform/nginx/nginx.conf 如果您要覆盖整个 nginx.conf。

【讨论】:

谢谢@Marcin。我将文件移动到 .platform/nginx/conf.d/myconf.conf 并重新部署,但问题没有改变。仍然需要很长时间,然后最终超时。 @JohnChristian 您的更改可能需要重写整个 nginx.conf。为此,您必须提供完整的.platform/nginx/nginx.conf 我很难相信为了让 hello world 烧瓶应用程序启动并运行,我需要提供整个配置?没有意义。在这种情况下,我不妨使用 EC2。 @JohnChristian 通常它开箱即用。我不知道你在用烧瓶应用程序做什么。您尚未提供有关您的设置的任何详细信息。你可以为此提出一个新问题。

以上是关于AWS Elastic Beanstalk - python 的 nginx 配置(AL2 上的 3.7)flask 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS Elastic Beanstalk 上配置我的 WSGI 应用程序的名称?

AWS Elastic Beanstalk Python (3.8) 平台:除了使用 `requirements.txt` 之外,为带有 `--no-deps` 标志的 Python 包运行额外的 p

Amazon Elastic BeanStalk 错误:无法创建 AWS Elastic Beanstalk 应用程序版本

[AWS] Elastic Beanstalk

AWS Elastic Beanstalk CLI 安装错误

text AWS Elastic Beanstalk