2017-10-09 146 views
2

我的Docker服务有反向代理问题。我有一台IP为10.0.0.163的本地计算机,并在其上运行带有nginx和portainer的Docker堆栈(对于这个问题只有他们很重要)。用于Docker容器的Nginx反向代理

搬运工-compose.yml:

... 
portainer: 
    image: portainer/portainer 
    ports: 
     - "9000:9000" 
    volumes: 
     - "/var/run/docker.sock:/var/run/docker.sock" 
     - "/mnt/StorageDrive/Portainer:/data" 
    deploy: 
     placement: 
     constraints: [node.role == manager] 
    networks: 
     ... 
     - proxy 

reverse-proxy: 
    image: reverseproxy:latest 
    ports: 
     - "80:80" 
    networks: 
     - proxy 

networks: 
    ... 
    proxy: 

nginx.conf:

worker_processes 1; ## Default: 1 

events { worker_connections 1024; } 

http { 

    sendfile  on; 

    server { 
    listen 80; 
    allow all; 

    location/{ 
     proxy_pass  http://10.0.0.163:9000; 
    } 
    } 
} 

Dockerfile为反向代理图像:

FROM nginx:alpine 

COPY nginx.conf /etc/nginx/nginx.conf 

当试图访问10.0.0.163我收到错误502和日志从反向代理秀这样的:

2017/10/09 07:43:02 [error] 5#5: *1 connect() failed (113: Host is unreachable) while connecting to upstream, client: 10.255.0.2, server: , request: "GET/HTTP/1.1", upstream: "http://10.0.0.163:9000/", host: "10.0.0.163" 
10.255.0.2 - - [09/Oct/2017:07:43:02 +0000] "GET/HTTP/1.1" 502 575 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" 

当输入10.0.0.163:9000/到浏览器 - 一切正常。问题是什么?我怎样才能使它与此URL工作

10.0.0.163/portainer/... -> 10.0.0.163:9000/... 

回答

2

试图改变nginx的配置

server { 
    listen 80; 
    allow all; 

    location/{ 
     proxy_pass  http://portainer:9000/; 
     resolver  127.0.0.11; 
    } 
    } 

portainer是定义到您的docker-compose.yml文件 127.0.0.11嵌入泊坞窗DNS服务器

而且容器名称。另一种方式。您可以使用jwilder/nginx-proxy而不是您的反向代理。

+0

您的解决方案完美无缺:)非常感谢! –

+0

欢迎您! –

+0

请帮我解决一个我提到的问题: '10.0.0.163/portainer/... - > 10.0.0.163:9000/...' 将配置更改为'location/portainer' doesn' t似乎工作 –