百川的博客

百川的博客
写点或者转载一些感觉精彩的文章,一起分享。见证下成长之路

使用docker搭建nginx反向代理用做内网域名转发 反向代理 域名转发

前言

  • 前面搭建了博客系统指向的是服务器的8000端口.
  • 现在需要达到的效果是:

    • www.A.com -> IP:8000 (博客系统)
    • www.B.com -> IP:8001(其他web项目)
    • 同一台服务器
  • 使用docker搭建nginx进行转发. 访问域名A的时候转发到服务器8000端口

准备工作

  • 安装好docker
  • 涉及的技术: docker网络模式, nginx

使用docker部署nginx服务器

  • 第一步

    • docker pull nginx # 拉取镜像
    • mkdir -p /shw/nginx/conf # 创建配置文件目录
  • 第二步 拷贝配置文件

    • docker run --name nginx01 -d nginx:latest

      • docker cp nginx01:/etc/nginx/nginx.conf /shw/nginx/conf #把容器中的nginx.conf文件复制到conf目录下
      • docker cp nginx01:/etc/nginx/conf.d/default.conf /shw/nginx/conf #把容器中的default.conf文件复制到conf目录下
      • docker rm -f nginx01 #删除镜像
      • 目的: 把配置文件拷贝出来待会有用(把配置文件映射到工作的nginx容器内. 因为容器是一个单独, 独立的小型系统, 把配置文件映射到宿主机好管理修改. 还可以持久化配置). 把nginx配置文件拷贝出来后nginx01容器就完成了目的, 故把nginx01容器删除
    • 2021-02-08T03:42:06.png
  • 第三步 创建容器(进行转发的nginx)

    • 运行命令: docker run -it -d --name mynginx -p 80:80 -v /shw/nginx/html:/usr/share/nginx/html -v /shw/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /shw/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf -v /shw/nginx/logs:/var/log/nginx nginx
    • 重启命令: --restart=always
    • 命令说明:

      • docker run -it -d --name mynginx #名称
      • -p 80:80 # 端口映射

        • 域名入口为www.A.com, 默认是80端口
        • 浏览器直接访问服务器ip, 访问的也是默认的80端口.
      • -v /shw/nginx/html:/usr/share/nginx/html # 挂载资源路径
      • -v /shw/nginx/conf/nginx.conf:/etc/nginx/nginx.conf #挂载主配置文件
      • -v /shw/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf # 挂载默认配置文件,反向代理就是从这个配置文件中配置
      • -v /shw/nginx/logs:/var/log/nginx nginx # 挂载日志文件
      • 最后进入到/shw/nginx/conf/default.conf修改成合适配置即可。
    • 2021-02-08T03:48:11.png

配置nginx转发

  • 至此nginx服务已经启动了, 容器名为: mynginx
  • mynginx服务的配置文件在/shw/nginx/conf目录下
  • 开始配置
  • 测试监听 localhost 域

    • 2021-02-08T04:00:36.png
    • 2021-02-08T03:59:32.png
  • 测试监听 www.hellolbc.me 域

    • 2021-02-08T04:04:11.png
    • www.hellolbc.me 自动调整到 www.qq.com了2021-02-08T04:05:49.png
    • 个人理解. 监听的端口可以一样, server_name 监听的域名. 如果还有其他域名要进行转发, 增加一条server即可

      • 2021-02-08T04:09:25.png

nginx访问typecho-blog(博客系统)

  • 经过测试nginx可以进行反向代理了, 问题是nginx容器内部如何转发另一个容器(typecho-blog)的地址? 2021-02-08T04:11:45.png
  • 博主选择自定义docker网络的方式. 这种方式比较灵活
  • 参考地址: https://www.jianshu.com/p/22a7032bb7bd
  • 开始设置

    • 创建自定义网络: docker network create --driver bridge my-net
    • 查看网络列表: docker network ls
    • 创建容器的时候使用自定义网络的容器可以互通

      • 例如: docker run -d -P --name tomcat-net-01 --net my-net
    • 添加已创建的容器到网络: docker network connect 网络名 容器名

      • docker network connect my-net mynginx # 把nginx添加到自定义网络里
      • docker network connect my-net typecho-blog # 把博客系统添加到自定义网络里
    • 将nginx移除mynet局域网络 docker network disconnect 网络名称 容器名称
    • 查看网络详情: docker network inspect my-net2021-02-08T05:26:18.png
  • 同在一个网络下的容器访问

效果

  • 2021-02-08T05:38:31.png

总结

如有疑问欢迎留言评论. 感谢您观看本博客

本原创文章未经允许不得转载 | 当前页面:百川的博客 » 使用docker搭建nginx反向代理用做内网域名转发 反向代理 域名转发

评论