先讲一下场景:  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

nginx 容器反向代理网址的设置的更多相关文章

  1. 【Nginx】使用Nginx做反向代理时,关于被代理服务器相应的超时设置

    > 参考的优秀文章 Module ngx_http_proxy_module > 设置等待被代理服务器的最大响应时间 使用Nginx做反向代理时,因被代理服务器因业务确实复杂,需时较久,往 ...

  2. Docker Nginx-Proxy 容器Nginx Proxy反向代理

    Docker Nginx-Proxy 容器Nginx Proxy反向代理   简单介绍 Docker容器的自动Nginx反向代理   dockerhub地址 https://hub.docker.co ...

  3. nginx配置反向代理详细教程(windows版)

    内容属于原创,如果需要转载,还请注明地址:http://www.cnblogs.com/j-star/p/8785334.html Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(I ...

  4. NGINX如何反向代理Tomcat并且实现Session保持

    简介 LNMT=Linux+Nginx+MySQL+Tomcat: Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器: 在中小型系统和并发访问用户不是很多的场合下被 ...

  5. Asp.Net Core使用Nginx实现反向代理

    ---恢复内容开始--- 前两篇文章介绍了使用Docker作为运行环境,用Nginx做反向代理的部署方法,这篇介绍一下使用Nginx配合.Net Core运行时直接在Liunx上裸奔的方法. 一.安装 ...

  6. windows版 nginx配置反向代理实例教程 跳转tomcat和php网站

    抄自 https://www.cnblogs.com/j-star/p/8785334.html 个人理解 nginx端口设置为80,简称n tomcat端口设置为其他,例如8080,简称t php网 ...

  7. Nginx使用反向代理实现负载均衡

    Nginx使用反向代理实现负载均衡 yls 2019-9-20 简介 基于docker容器以及docker-compose,所以需要自学docker在linux环境的基本使用 使用两个tomcat作为 ...

  8. wsl 2 unbuntu 部署 asp.net core 使用 nginx 做反向代理,调试文件上传失败

    继上一篇 asp.net core 3.1多种身份验证方案,cookie和jwt混合认证授权 的公司内部项目上线后发现文件上传功能有问题. 上传的文件超过50M以后前端就报错了,没有状态返回,也没有响 ...

  9. Windos环境用Nginx配置反向代理和负载均衡

    Windos环境用Nginx配置反向代理和负载均衡 引言:在前后端分离架构下,难免会遇到跨域问题.目前的解决方案大致有JSONP,反向代理,CORS这三种方式.JSONP兼容性良好,最大的缺点是只支持 ...

随机推荐

  1. C语言面试基础知识整理

    一.预处理 1.什么是预编译?何时需要预编译? (1)预编译又称预处理,是做些代码文本的替换工作,即程序执行前的一些预处理工作.主要处理#开头的指令,如拷贝#include包含的文件代码.替换#def ...

  2. Mac Git 安装和配置

    一.git下载与安装 点击Git,然后选择下载安装包 git --version,终端输入该命令, 如输出版本号,则说明安装成功. git version 2.20.1 二.git基本配置 通过下面这 ...

  3. 数字信号处理专题(2)——利用FPGA进行基本运算及特殊函数定点运算

    一.前言 FPGA以擅长高速并行数据处理而闻名,从有线/无线通信到图像处理中各种DSP算法,再到现今火爆的AI应用,都离不开卷积.滤波.变换等基本的数学运算.但由于FPGA的硬件结构和开发特性使得其对 ...

  4. win7系统搭建FTP服务器

    工作需要,所以研究了一下. 1. 打开: 控制面板 -> 卸载程序 -> (左侧)打开或关闭windows功能 等个一小会,勾选如下图红色方框内的选项. 2. 开始 -> 搜索: I ...

  5. UOJ #269. 【清华集训2016】如何优雅地求和

    UOJ #269. [清华集训2016]如何优雅地求和 题目链接 给定一个\(m\)次多项式\(f(x)\)的\(m+1\)个点值:\(f(0)\)到\(f(m)\). 然后求: \[ Q(f,n,x ...

  6. [Alpha阶段]第七次Scrum Meeting

    Scrum Meeting博客目录 [Alpha阶段]第七次Scrum Meeting 基本信息 名称 时间 地点 时长 第七次Scrum Meeting 19/04/11 大运村寝室6楼 35min ...

  7. dpdk-18.11开发库编译安装

    简介 dpdk官网 安装 下载 点击下载地址,选择合适的版本下载.这里下载DPDK 18.11.0 (LTS)版本. 编译 将下载的dpdk-18.11.tar.xz上传服务器,解压,这里放在了/op ...

  8. .netcore2.0发送邮件

    SmtpClient smtpClient = new SmtpClient(); smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指 ...

  9. web开发中各种宽高

    Gosper 曲线:https://www.cnblogs.com/tgzhu/p/8286616.html

  10. git 远程新建分支后,本地查看不到

    使用以下命令同步 git remote # 列出所有远程主机git remote update origin --prune # 更新远程主机origin 整理分支git branch -r # 列出 ...