【问题标题】:Nginx container acting as a proxy充当代理的 Nginx 容器
【发布时间】:2018-06-09 03:14:10
【问题描述】:

我最近开始学习 Docker,发现了一个名为 Portainer 的工具来管理 Docker 容器和映像。我让它作为远程服务器上的容器运行,但它使用端口 9000,我想将其更改为 80,所以我考虑使用代理。我决定使用 Nginx(我以前从未使用过)作为容器。我按照以下说明启动 Nginx:

docker run --name mynginx2 -v /var/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -P -d nginx

/var/nginx/conf/nginx.conf 文件如下所示:

events {
    worker_connections 1024;
}
http {
    server {
        location / {
            proxy_pass http://localhost:9000;
        }
    }
}

由于容器启动过程中的错误,必须插入worker_connections。当我访问远程服务器的 ip(例如:http://ip.of.my.server/)时,我希望 Portainer 会出现,但什么也没有发生。我什至没有得到响应的状态码。

我在这里错过了什么?

亲切的问候, 丹尼尔

【问题讨论】:

  • nginx 容器是否在远程主机上运行?也许它确实由于配置错误而停止了。
  • 它运行在与 Portainer 相同的远程主机上,我一直在监控和检查 - nginx 容器正在运行。

标签: ubuntu docker nginx proxypass


【解决方案1】:

像这样运行portainer 容器:

docker run -it --name myportainer -v "/var/run/docker.sock:/var/run/docker.sock" -d portainer/portainer

然后像这样运行nginx

docker run --name mynginx2 -v /var/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -p 80:80 -P -d --link myportainer:myportainer nginx

在你的 nginx 配置中使用这个:

events {
    worker_connections 1024;
}
http {
    server {
        listen 80;

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

上面的命令也应该可以解决问题,从长远来看,docker-compose 会更容易使用:

这就是您的docker-compose.yml 的样子:

version: "2"

services: 

  proxy:
      image: nginx:latest
      container_name: proxy
      ports:
       - "80:80"
      volumes:
       - /var/nginx/conf/nginx.conf:/etc/nginx/nginx.conf

  portainer:
      image: portainer/portainer
      container_name: myportainer

然后你只需运行docker-compose up -d

【讨论】:

    猜你喜欢
    • 2020-12-18
    • 1970-01-01
    • 2018-03-20
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 2019-03-11
    相关资源
    最近更新 更多