• nginx 容器反向代理网址的设置


    先讲一下场景:  nginx 容器要和SpringBoot 容器部署在一台机器上, nginx 为 SpringBoot 提供反向代理, 需要在 nginx.conf 中写上 SpringBoot 的网址,  为了保证 nginx 容器有很好的迁移特性, 反向代理网址自然不能用 IP 来指定 springboot 网址了.   下面是几种做法.

    ===================================

    1.  nginx.conf 使用 localhost 来指向 springBoot 系统, 并 nginx 容器使用 host 网络

    ===================================

    springBoot 容器按照正常方式启动, 可以加上 docker run -p 8080:8080 这样的端口映射.  nginx 容器启动需要使用 docker run --net=host 启动, 不能加 -p 参数(其实加上 -p 参数可以运行, 但端口映射不起作用). 注意一定要使用 host 网络,  因为 nginx.conf 中使用了 localhost 来关联 springboot, 所以必须使用 host 网络, 即使用宿主机network 命名空间, 如果不使用宿主机network, 这里的localhost 就是nginx 容器的localhost了, 并不是宿主机的localhost, 也就不能关联到 springboot 容器了. 

    ===================================

    2.  nginx.conf 使用 localhost 来指向 springBoot 系统, 并 nginx 容器加上 link 参数

    ===================================

    springBoot 容器按照正常方式启动, 可以加上 docker run -p 8080:8080 这样的端口映射.  nginx 容器启动需要使用 docker run --link springboot_container:localhost 启动.  在这种情况下, nginx 还是使用默认的 bridge 网络形式

    ===================================

    3.  nginx.conf 使用宿主机的 docker0 网卡 ip

    ===================================

    在安装Docker的时候,  会在宿主机安装一个虚拟网关docker0, 我们可以使用宿主机在docker0上的IP地址来代替localhost, Linux 下 docker0 的ip 一般为 172.17.0.1 , 注意该ip 地址是可以被修改的. 

    容器启动时候, 如果没有设定 --net 参数, 其实等同于 --net=bridge, 即进入网桥模式, 这时docker daemon就会扮演 DHCP 服务器, 为容器分配一个和 docker0 同网段的ip, 并连接到 docker0 . 所以在容器中, 总是可以通过 docker0 的ip 访问到 host 主机. 

    显示 docker0 网卡 ip 的命令是:

    ip addr show docker0
    
    

    ===================================

    4.  nginx.conf 使用 springboot 的容器名

    ===================================

    假设 springboot 容器名为  springboot_container, 在 nginx.conf 这次使用  http://springboot_container:8080 的方式指向 springboot 网址. 

     nginx 容器启动需要使用 docker run --link springboot_container 启动

    当然 link 参数已经不推荐了,  而刻意使用 network 来替换, 思路是一样的. 

    ===================================

    参考:

    ===================================

    https://jingsam.github.io/2018/10/16/host-in-docker.html

    https://blog.csdn.net/chengqiuming/article/details/80958834 

  • 相关阅读:
    【设计模式】责任者模式
    【Java工具方法】给集合按数量分组
    【Spring】非Spring IOC容器下获取Spring IOC上下文的环境
    【Java】模板方法模式
    【RabbitMQ】CentOS安装RabbitMQ,及简单的Java客户端连接
    【RabbitMQ】RabbitMQ的一些基础概念
    【Spring】简单的Spring AOP注解示例
    【Web】URI和URL,及URL的编码
    【加密】对称加密算法
    【Normal Form】数据库表结构设计所遵从的范式
  • 原文地址:https://www.cnblogs.com/harrychinese/p/docker-network.html
Copyright © 2020-2023  润新知