【发布时间】:2018-09-28 18:58:11
【问题描述】:
我有一个安装了 Nginx 的亚马逊 EC2 实例(使用 Amazon Linux)。我设置了一个 python Flask 应用程序并将其放在 Docker 容器上。 Docker 文件在这里:
FROM apierleoni/flask-uwsgi:latest
EXPOSE 3001
WORKDIR /usr/src/app
RUN pip install --upgrade pip
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 3001
CMD [ "uwsgi", "--socket", "0.0.0.0:3001", \
"--protocol", "http", \
"--wsgi", "wsgi:app" ]
docker-compose.yml 看起来像这样:
version: '3'
services:
integration-app:
container_name: integration-app-api
build:
context: .
dockerfile: Dockerfile
volumes:
- '.:/usr/src/app'
ports:
- '3001:3001'
运行docker-compose up 命令后,我可以在端口 3001 上通过 HTTP 访问 Flask 应用程序路由
Nginx 反向代理不起作用。它会产生 502 错误。 Nginx 的配置是这样的
upstream api_server2 {
server 127.0.0.1:3001;
}
server {
...
location /crm-project-api {
include uwsgi_params;
uwsgi_pass api_server2;
}
...
}
【问题讨论】:
-
当您收到 502 错误时,您能检查一下
/var/log/nginx/error.log中显示的内容吗? -
127.0.0.1 始终是“这个容器”并且是上游的错误值。
-
@VigneshSP 这就是它所说的:21315#0: *3284 上游过早关闭连接,同时从上游读取响应标头,客户端:204.107.115.18,服务器:www.gndhtrn.tk,请求:“ GET /crm-project-api HTTP/2.0”,上游:“uwsgi://127.0.0.1:3001”,主机:“www.gndhtrn.tk”
-
@DavidMaze nginx 没有安装在 docker 上,它安装在本地的 AWS EC2 实例上。
标签: python docker nginx flask uwsgi