【问题标题】:nginx/apache redirection for output port on docker container on vpsnginx / apache重定向vps上docker容器上的输出端口
【发布时间】:2016-02-13 02:41:20
【问题描述】:

我是 docker 容器管理员的 linux 新手,在 VPS 上使用 apache 或 nginx。

我使用已安装 ubuntu 15.04 + docker 映像的 OVH 经典 Vps(4go ram,25Go SSD)。

docker 容器的安装非常简单,在我的情况下,我安装了图像sharelatex 没有问题。

docker run -d \
  -v ~/sharelatex_data:/var/lib/sharelatex \
  -p 5000:80 \
  --name=sharelatex \
  sharelatex/sharelatex

站点可通过 VPS 的 IP 访问 http://51.255.47.40:5000 端口表明站点正常工作。

我已经在服务器 ip vps 上配置了一个子域 (tools.sebastienreycoyrehourcq.fr)(51.255.47.40 在 webfaction 面板中路由到 External),无法正常工作,不明白为什么。

我在51.255.47.40 上安装了 apache 服务器,但我想最好的选择可能是安装 nginx 或 apache 的 docker 映像?你能在这一点上给我建议吗?之后,我如何重定向到链接到我的子域的经典 80 端口 apache 或 nginx 上的 docker 映像的 5000 端口?

【问题讨论】:

    标签: linux apache nginx docker vps


    【解决方案1】:

    以前的答案可能涵盖了大部分问题,尤其是如果您的域名存在重定向问题。

    为了完全可移植并使用 docker 的所有可能性,我的建议是使用 Nginx 官方 docker 镜像并使其成为唯一可以从外部访问的镜像(打开端口)并使用@987654321 @ 管理 Nginx 容器和其他容器之间的连接。

    我在类似的情况下做过,效果很好。以下是我对您的情况所做的暂定翻译。

    您在不指定任何外部端口的情况下启动您的共享乳胶容器:

    docker run -d \
      -v ~/sharelatex_data:/var/lib/sharelatex \
      --name=sharelatex \
      sharelatex/sharelatex
    

    你为你的 shareLatex 服务器准备了一个 nginx 配置文件,你将它放在 $HOME/nginx/conf 中,看起来像

    upstream sharelatex {
         # this will refer to the name you pass as link to the nginx container
         server sharelatex; 
    }
    
    server {
            listen 80;
            server_name tools.sebastienreycoyrehourcq.fr;
            location  ^~ / {
                  proxy_pass http://sharelatex/;
            }
    }
    

    然后使用适当的卷链接和容器链接启动 nginx docker 容器:

    docker run -d --link sharelatex:sharelatex --name NginxMain -v $HOME/nginx/conf:/etc/nginx/sites-available -v -p 80:80 kekev76/nginx
    

    ps : 这是使用我们自己的 kekev76/nginx 镜像完成的,该镜像在 github 和 docker 上公开,但您可以将原理调整为官方 nginx 镜像。

    【讨论】:

      【解决方案2】:

      nginx-proxy (https://github.com/jwilder/nginx-proxy) 然后在 VIRTUAL_HOST 设置为 tools.sebastienreycoyrehourcq.fr 的情况下运行 sharelatex 应该足以让它工作。

      例如

      docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
      

      紧随其后

      docker run -d \
      -e VIRTUAL_HOST=tools.sebastienreycoyrehourcq.fr \
      -v ~/sharelatex_data:/var/lib/sharelatex \
      -p 5000:80 \
      --name=sharelatex \
      sharelatex/sharelatex
      

      【讨论】:

      • 感谢您的回答,使用 nginx-proxy 是否可以将生成的配置文件保存在卷中?
      • 基于https://github.com/jwilder/nginx-proxy/blob/master/Procfiledocker cp <nginx-proxy-container>:/etc/nginx/conf.d/default.conf nginx.conf 应该这样做。
      【解决方案3】:

      子域tools.sebastienreycoyrehourcq.fr 配置不正确。它无法解析到任何 IP 地址,这就是它不起作用的原因。

      配置子域后,您可以使用以下命令在端口 80 上运行 sharelatex 容器:

      docker run -d \
        -v ~/sharelatex_data:/var/lib/sharelatex \
        -p 80:80 \
        --name=sharelatex \
        sharelatex/sharelatex
      

      这样您就可以通过http://tools.sebastienreycoyrehourcq.fr访问应用程序

      【讨论】:

        猜你喜欢
        • 2017-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-24
        • 1970-01-01
        • 2017-05-07
        • 1970-01-01
        • 2021-12-27
        相关资源
        最近更新 更多