Amazon web services AWS弹性Beanstalk部署502网关错误

Amazon web services AWS弹性Beanstalk部署502网关错误,amazon-web-services,amazon-elastic-beanstalk,Amazon Web Services,Amazon Elastic Beanstalk,我在AWS Elastic Beanstalk上部署了一个Docker容器 当我访问该站点时,它返回一个502错误,这使我认为Docker容器中的端口没有公开 以下是我的设置: dockrun.aws.json: { "AWSEBDockerrunVersion": "1", "Volumes": [ { "ContainerDirectory": "/var/app", "HostDirectory": "/var/app" } ], "Logging": "/var/

我在AWS Elastic Beanstalk上部署了一个Docker容器

当我访问该站点时,它返回一个502错误,这使我认为Docker容器中的端口没有公开

以下是我的设置:

dockrun.aws.json:

{
"AWSEBDockerrunVersion": "1",
"Volumes": [
  {
    "ContainerDirectory": "/var/app",
    "HostDirectory": "/var/app"
  }
],
"Logging": "/var/eb_log",
"Ports": [
  {
    "containerPort": 80
  }
]
}
Dockerfile

FROM ubuntu:16.04

# Install Python Setuptools
RUN rm -fR /var/lib/apt/lists/*
RUN apt-get update
RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:jonathonf/python-3.6
RUN apt-get update && apt-get install -y python3-pip
RUN apt-get install -y python3.6
RUN apt-get install -y python3-dev
RUN apt-get install -y libpq-dev
RUN apt-get install libffi-dev
RUN apt-get install -y git

# Add and install Python modules
ADD requirements.txt /src/requirements.txt
RUN cd /src; pip3 install -r requirements.txt

# Bundle app source
ADD . /src

# Expose
EXPOSE  80

# Run
CMD ["python3", "/src/app.py"]
app.py

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

# run the app.
if __name__ == "__main__":
    # Setting debug to True enables debug output. This line should be
    # removed before deploying a production app.
    app.debug = False
    app.run(port=80)
我在docker-ps.log中看到:

CONTAINER ID        IMAGE               COMMAND                 CREATED             
STATUS              PORTS               NAMES
ead221e6d2c6        2eb62af087be        "python3 /src/app.py"   34 minutes ago      Up 34 minutes       80/tcp              peaceful_lamport
以及:

这个错误是:

2017/07/06 05:57:36 [error] 15972#0: *10 connect() failed (111: Connection refused) while connecting to upstream, client: 172.5.154.225, server: , request: "GET / HTTP/1.1", upstream: "http://172.17.0.3:80/", host: "bot-platform.us-west-2.elasticbeanstalk.com"

我做错了什么?

查找错误代码后,我认为您可以尝试以下解决方案。似乎您必须编辑elastic beanstalk的nginx配置。您可以将文件nginx.config添加到elastic beanstalk中的.ebextions目录中。将以下内容放入文件:

files:
  "/etc/nginx/conf.d/000_my_config.conf":
  content: |
    upstream nodejsserver {
      server 127.0.0.1:8081;
      keepalive 256;
    }

    server {
      listen 8080;

      location / {
        proxy_pass  http://nodejsserver;
        proxy_set_header   Connection "";
        proxy_http_version 1.1;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      }

      location /myconfig {
        proxy_pass http://my_proxy_pass_host;
      }
    }
也许你需要调整一下,但这似乎是解决问题的正确方法。如果你用谷歌搜索你的错误,你会发现在如何调整nginx以解决这个问题上有很多稍微不同的解决方案

files:
  "/etc/nginx/conf.d/000_my_config.conf":
  content: |
    upstream nodejsserver {
      server 127.0.0.1:8081;
      keepalive 256;
    }

    server {
      listen 8080;

      location / {
        proxy_pass  http://nodejsserver;
        proxy_set_header   Connection "";
        proxy_http_version 1.1;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      }

      location /myconfig {
        proxy_pass http://my_proxy_pass_host;
      }
    }