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

    最近想来,大数据相关技术与传统型数据库技术很多都是相互融合.互相借鉴的.传统型数据库强势在于其久经考验的SQL优化器经验,弱势在于分布式领域的高可用性.容错性.扩展性等,假以时日,让其经过一定的改造, ...

  2. Redis 主从复制原理及雪崩 穿透问题

    定义: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMw ...

  3. 国产多维数据库 NeuralCube!中国人自己的大数据底层核心技术!

    商业转载请联系作者获得授权,非商业转载请注明出处. 提到‘数据库’,首先被想到的肯定是Oracle.DB2.SQL Server.MySql这些传统的关系型数据库.数据库的概念是非常宽泛的,除了上述的 ...

  4. 专注于C#.Net WPF软件开发-软件反编译-软件破解-逆向-靖芯科技-包括安卓APK反编译

    靖芯科技提供.Net软件开发,软件修改定制二次开发,软件破解,反编译,逆向等各项优质服务: 包括安卓APK软件反编译. 包括但不限于C#,WPF,Surface,Winform,Asp.net.JAV ...

  5. 工作中遇到的一些linux常用命令总结

    零.查看历史命令,linux中可按“↑” “↓”查找之前输入的命令,亦可用 history 命令查看之前的输入,linux中的亦有“Tab”键可联想输入 一.root权限: 1.su 之后输入root ...

  6. Codeforces round 1086

    Div1 528 我菜哭了.jpg 这个C的出题人能不能停止出题啊QaQ A 这不是裸的斯坦纳树嘛! 然后我就写上了.jpg 然后我没调出来... 然后我发现...这不是傻逼题吗... 直接按照$x$ ...

  7. Activiti开发案例之代码生成工作流图片

    图例 环境 软件 版本 SpringBoot 1.5.10 activiti-spring-boot-starter-basic 6.0 生成代码 以下是简化代码: /** * 查看实例流程图,根据流 ...

  8. openstack第六章:dashboard

    第六篇horizon— Web管理界面     一.horizon 介绍:   理解 horizon   Horizon 为 Openstack 提供一个 WEB 前端的管理界面 (UI 服务 )通过 ...

  9. python实现对文件的全量、增量备份

    #!/user/bin/env python # @Time :2018/6/6 10:10 # @Author :PGIDYSQ #@File :FileBackup2.py import os i ...

  10. Python Scrapy项目创建(基础普及篇)

    在使用Scrapy开发爬虫时,通常需要创建一个Scrapy项目.通过如下命令即可创建 Scrapy 项目: scrapy startproject ZhipinSpider 在上面命令中,scrapy ...