docker - Docker 容器的 Nginx 反向代理

标签 docker nginx proxy docker-compose reverse-proxy

我的 Docker 服务的反向代理存在问题。我有一台 IP 为 10.0.0.163 的本地计算机,并在其上运行 Docker 堆栈以及 nginx 和 porttainer(对于这个问题,只有它们很重要)。

docker-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/...

最佳答案

尝试更改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是嵌入式docker DNS服务器

还有。另类方式。您可以使用jwilder/nginx-proxy而不是你的反向代理。

关于docker - Docker 容器的 Nginx 反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46641475/

相关文章:

python - 如何使这个 Twisted Python 代理更快?

docker - Docker Swarm通用设备资源连接

docker - 可以在docker port之后添加前缀

docker - 如何为Docker设置环境变量设置运行时变量

nginx - Kubernetes NGINX 入口 Controller 激活 TLSv1.1

nginx - 带有 nginx 的 FastAPI 不提供 HTTPS 中的静态文件

docker - Kubernetes中Pod上的CrashloopBackOff(在具有Jenkins的GCP上)

linux - linux 和 nginx 更新后 php 不工作

javascript - 在浏览器中使用 javascript 拦截 ajax 响应

http - 缓存破坏——查询字符串与 URL 路径