使用 nginx 反向代理多个 docker 容器

栏目: 编程工具 · 发布时间: 6年前

内容简介:之前介绍 docker 的时候说过它的优势之一,就是可以在同一服务器中搭建多个环境,互相隔离。昨天就实际操作下,万万没想到如此多的坑,比之前从零开始搭建服务器都费时间。变换了好几种方案,最终还是解决了,中间的心酸就忽略吧,直接说操作方法。服务器中已存在的是 laradock 镜像,可以运行 laravel 环境以及其他的 PHP,包含了 nginx、mysql、redis 等。我的想法是再添加一个 nginx 容器,用来做反向代理。根据子域名进行分发,可以分发给 laradock,也可以给其他任何容器(包括

导语

之前介绍 docker 的时候说过它的优势之一,就是可以在同一服务器中搭建多个环境,互相隔离。昨天就实际操作下,万万没想到如此多的坑,比之前从零开始搭建服务器都费时间。变换了好几种方案,最终还是解决了,中间的心酸就忽略吧,直接说操作方法。

架构

服务器中已存在的是 laradock 镜像,可以运行 laravel 环境以及其他的 PHP,包含了 nginx、 mysqlredis 等。

我的想法是再添加一个 nginx 容器,用来做反向代理。根据子域名进行分发,可以分发给 laradock,也可以给其他任何容器(包括 wordpress、 python 、java)等等

修改 lradock

要修改的只有一个地方,就是 nginx 监听的端口。

  1. 进入到 laradock 目录中
  2. 修改 .env 文件,修改 NGINX_HOST_HTTP_PORT 值由 808000
  3. 停止 nginxdocker-compose stop nginx
  4. 重装 nginxdocker-compose build nginx
  5. 启动 docker-compose up -d nginx

这个时候在浏览器中是不能访问成功的,因为 nginx 已经不再监听 80 端口。

添加 nginx 容器

新添加一个 nginx 容器用来做反向代理。在安装 laradock 的时候,已经有了 nginx:alpine 的镜像,可以直接生成容器。当然你也可以重新 pull 一个新的镜像。(推荐使用 alpine 版本)

  1. 查看 nginx 镜像 ID, docker iamges
  2. 生成新的 ngixn 容器, docker run --name proxy_nginx -p 80:80 -d [nginx image id] 。也可以添加 -v 参数来映射配置文件,我的环境较少变动就不需要了
  3. 此时在浏览器中访问,应该是 nginx 的默认页面,说明启动成功
  4. 进入到生成的容器中 docker exec -it proxy_nginx sh
  5. 安装 vimapk add vim
  6. 查看宿主机 ip, /sbin/ip route|awk '/default/ { print $3 }'
  7. /etc/nginx/conf.d/ 目录下添加新配置文件 laradock.conf ,内容如下
server {
    listen  80;
    server_name  you_sits;

    location / {
        proxy_set_header  Host  $http_host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass  http://[宿主机IP]:8000;
    }
}
  1. 退出容器,然后重启 docker restart proxy_nginx
  2. 打开 8000 端口,参考这里

结语

这个时候访问的话,就可以代理到 laradock 中的 nginx 了。后续想要新增其他的容器,只要在 proxy_nginx 中添加新的代理规则就可以了。

参考资料: 【转载】记一次用 Docker 运行 Nginx 容器做域名反向代理时踩的坑如何从容器内部获取主机IP


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

浅薄

浅薄

[美] 尼古拉斯·卡尔 / 刘纯毅 / 中信出版社 / 2010-12 / 42.00元

《浅薄:互联网如何毒化了我们的大脑》在我们跟计算机越来越密不可分的过程中,我们越来越多的人生体验通过电脑屏幕上闪烁摇曳、虚无缥缈的符号完成,最大的危险就是我们即将开始丧失我们的人性,牺牲人之所以区别于机器的本质属性。——尼古拉斯•卡尔“谷歌在把我们变傻吗?”当尼古拉斯•卡尔在发表于《大西洋月刊》上赫赫有名的那篇封面文章中提出这个问题的时候,他就开启了人们热切渴望的期盼源泉,让人急于弄清楚互联网是在......一起来看看 《浅薄》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码