我想在Nginx Web服务器上运行aiohttp后端服务。两者都应在docker容器中运行。此外,我的前端角度应用程序应该访问我的后端服务。
我希望nginx Web服务器可以连接到在docker中运行的后端系统aiohttp。
当我尝试在aiohttp后端服务上调用GET请求时,总是在docker日志中出现错误。
nginx_1 | 2018/09/29 13:48:03 [错误] 6#6:* 1((111:连接被拒绝)连接到上游时失败(111:连接被拒绝),客户端:172.19.0.1,服务器:,请求:“ GET / toolservice / volatility?command = pslist HTTP / 1.1“,上游:” http://172.19.0.2:80/toolservice/volatility?command=pslist“,主机:” localhost“ nginx_1 | 172.19.0.1--[29 / Sep / 2018:13:48:03 +0000]“ GET / toolservice / volatility?command = pslist HTTP / 1.1” 502576“-”“ Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 69.0.3497.100 Safari / 537.36“”-“
version: '3'
services:
nginx:
build: ./nginx
restart: always
depends_on:
- toolservice
- ifs
ports:
- "80:80"
ifs:
restart: always
build: ../ifsbackend
ports:
- "8002:8000"
toolservice:
restart: always
build: ../ToolService
ports:
- "8001:8000"
FROM nginx:1.13-alpine
RUN rm /etc/nginx/conf.d/default.conf
COPY conf/server.conf /etc/nginx/conf.d/
FROM python:3.6.6-alpine
COPY tool /
COPY requirements.txt /
COPY toolservice_config.yaml /
RUN apk update && apk add \
python3-dev \
musl-dev \
gcc \
&& pip install -r requirements.txt \
&& pip install virtualenv
RUN python3 -m virtualenv --python=python3 virtualenv
EXPOSE 8080
CMD [ "python", "server.py" ]
#upstream toolservice {
# server 0.0.0.0:8001 fail_timeout=0;
#}
server {
listen 80;
#server_name localhost;
proxy_buffers 8 16k;
proxy_buffer_size 32k;
location /toolservice {
proxy_pass http://toolservice;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /ifs {
proxy_pass http://ifs;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
from aiohttp import web
from routes import setup_routes
from settings import config
app = web.Application()
setup_routes(app)
app['config'] = config
web.run_app(app, port=8001)
答案 0 :(得分:1)
Aiohttp在容器toolservice
中的端口8001上运行,但是您代理到端口80。
proxy_pass http://toolservice;
尝试代理到8001:
proxy_pass http://toolservice:8001;
也许您需要修复toolservice
容器的端口发布-我不确定100%:
ports:
- "8001:8001"