如何在 docker 容器使用 nginx 实现反向代理统一站点入口

news/2024/5/7 18:14:13/文章来源:https://blog.csdn.net/surfirst/article/details/128077301

在微服务架构下,我们会部署很多微服务来实现我们的系统。每个微服务会有不同的端口。而用户在访问我们的站点时希望通过统一的端口来访问所有的服务,因为在很多情况下用户只能通过 80 或者 443 端口访问外界服务。

这个时候我们就可以使用反向代理来实现统一网站访问入口的意图。
在这里插入图片描述
如上图所示,如果没有反向代理,用户通过浏览器访问 UI 服务需要使用 8080 端口,UI 服务调用 API 服务的资源去执行某个任务需要调用 8081 端口。如果用户的防火墙不能访问8081端口,那么用户的服务请求就会失败。另外把后台服务直接暴露给客户端,会把安全压力全都转给了每个后台服务上,另一方面每个服务都需要自己去实现诸如负载均衡、熔断、限流等防护措施。

在这里插入图片描述
如上图所示,使用反向代理,客户所有的访问统一经过80端口,通过不同的路径把请求路由到对应的服务上。比如使用 http://hostnamt/ui 访问 UI 服务,使用 http://hostname/api 访问 API 服务。

这样后台服务不再暴露给外界客户端,用户也不用担心因为防火墙限制而造成某些服务不能被访问的问题。

使用 nginx 容器实现反向代理

Docker 容器化的解决方案简化了微服务的部署。对于上图中的 3 个服务,我们可以用 3 个容器来实现,其中一个容器用 nginx 来做反向代理。具体步骤如下:

  1. 从 Docker hub 下载 nginx 容器镜像
  2. 运行这个镜像成为一个容器
  3. 从这个容器中复制 nginx 配置文件
  4. 增加 proxy_pass 配置,把访问路径指向后端服务
  5. 制作 dockfile 生成反向代理镜像文件

启动 nginx 服务

使用下面的命令启动 nginx 服务

sudo docker run -d --name mynginx -p 80:80 nginx:latest

从容器中复制 nginx 配置文件

sudo docker cp mynginx:/etc/nginx/conf.d/default.conf ~/default.conf

配置 nginx 增加一条反向代理

假设我们有一个服务的访问地址是:http://localhost:8080/ui, 另一个是 http://localhost:8081/api

那么我们可以给上面的 default.conf 文件增加两条反向代理指令,将来我们可以通过 http://localhost/ui 和 http://localhost/api 直接访问我们的后台服务。

server {listen       80;listen  [::]:80;server_name  localhost;#access_log  /var/log/nginx/host.access.log  main;location / {root   /usr/share/nginx/html;index  index.html index.htm;}location /ui {proxy_pass http://localhost:8080/ui;proxy_buffering off;proxy_set_header X-Real-IP $remote_addr;}location /api {proxy_pass http://localhost:8081/api;proxy_buffering off;proxy_set_header X-Real-IP $remote_addr;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}
}

制作 dockerfile

我们的 dockerfile应该类似于下面的样子。它的作用就是把我们修改后的 default.conf 文件代替原来的配置文件。

FROM nginx
COPY ~/default.conf /etc/nginx/conf.d/default.conf

运行下面的命令就可以生成我们的 nginx 反向代理容器镜像了。

docker build

结论

反向代理可以简化客户端访问后台服务的过程。我们通过改变 nginx Docker镜像可以给我们的 docker 容器化的微服务制作方向代理服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_227002.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes集群coredns缓存容器bind: address already in use错误导致集群服务无法互通解决

coredns缓存nodelocal dns cache :53: bind: address already in use错误处理起因分析问题处理问题重启Node local dns起因 事情起因是Kubernetes集群内的服务无法互相访问了 分析问题 因为Kubernetes集群内的服务都是通过service、pod的名称作为域名到coredns解析Cluster I…

[附源码]计算机毕业设计springboot贷款申请审核管理系统论文

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【简单、高效、性能好】SetFit:无需Prompts的高效小样本学习

重磅推荐专栏: 《Transformers自然语言处理系列教程》 手把手带你深入实践Transformers,轻松构建属于自己的NLP智能应用! 1. 概要 使用预训练语言模型的小样本学习(处理只有少量标签或没有标签的数据)已成为比较普遍的…

Zlibrary已死,找了一个替代品,找了一个替代品免费的电子书下载平台...

大家好,我是鸟哥。一个半路出家的程序员。 提到Zlibrary,想必大家都不陌生吧。全球最大的数字图书馆,截止被封前共收录了591万本书,7751万篇文章,并且还在不断的增加中,关键是可以免费下载。 反正我是很熟悉…

智能计量系统配套设备有哪些

智能计量系统配套设备 地磅区域安装配套设备包含:微波定位仪、视频监控、道闸、LED显示屏、车号识别、语音对讲、音响设备、红绿灯、刷卡机箱、雷达、补光灯。 硬件设备 1、微波定位仪:通过微波定位仪设备,可以判断车辆是否完全上磅。 2、…

C++11(一)

🧸🧸🧸各位大佬大家好,我是猪皮兄弟🧸🧸🧸 文章目录一、列表初始化initializer_list二、声明1.auto2.decltype3.nullptr三、C11 STL中的变化1.array2.forward_list3.STL其他变化四、C关键字新功…

【三维重建补充知识-0】视差、深度概念及其转换

一、基本概念 把手指放在眼前,分别闭上左、右眼,我们会发现手指与后边物体的相对位置是不同的,也即两眼所识别的两幅图像之间存在视觉差异,我们通过“视差”这一概念来表示这种差别。 该过程也可以通过两个处于同一平面的相机来模…

C++ 之 移动构造函数

1、左值和右值 C( 包括 C) 中所有的表达式和变量要么是左值,要么是右值。 通俗的左值的定义就是非临时对象,那些可以在多条语句中使用的对象,表达式结束后依然存在的持久化对象,所有的具名变量或者对象都是左值。右值是指临时的…

设置渐变边框色

如上图所示,需设置渐变边框色,左右边框颜色固定,上边框从左到右开始渐变,下边框从右到左开始渐变。 思考了很久,如果看作是一个div,则需要用到 border-image属性设置渐变色。也可以看作是两个div&#xff0…

CISAW信息安全保障人员认证考试难吗?

CISAW信息安全保障人员认证,作为信息安全行业相当热门的证书之一,其持证人数已超50%,在信息安全行业内占有一席之地,很多报考人都比较关心CISAW考试难不难?能通过吗?那接下来说一说CISAW证书考不好考&#…

常见的网络协议

目录 一、TCP/IP协议簇 二、网络设备与五层模型对应关系: 三、常用网络协议总结(TCP/IP协议簇) 四、应用层服务协议 五、传输层协议组 TCP_UDP 六、网络层协议 IP_ICMP_ARP 七、物理层协议 MAC子层协议 一、TCP/IP协议簇 OSI七层模型…

IBM MQ 故障诊断(一)

说明:本文主要是针对运维人员的手册。前面部分主要是应用三板斧的方式,后面的步骤可能会发散和具体深入一些。不过也不是严格的划分,读者就当看一遍杂文的方式来看待此文吧。 一,队列管理器的启停 QMGR的启停是故障诊断中遇到最…

[附源码]SSM计算机毕业设计线上图书销售管理系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

用huggingface.transformers在文本分类任务(单任务和多任务场景下)上微调预训练模型

诸神缄默不语-个人CSDN博文目录 transformers官方文档:https://huggingface.co/docs/transformers/index AutoModel文档:https://huggingface.co/docs/transformers/v4.23.1/en/model_doc/auto#transformers.AutoModel AutoTokenizer文档:ht…

Java#数据结构----2

目录 一.数据结构(树) 二.二叉树(任意节点的度<2) 二叉查找树又称为二叉排序树/二叉搜索树 平衡二叉树 平衡二叉树的旋转机制 三.红黑树 一.数据结构(树) 基本概念: 度: 每一个节点的子节点数量 树高: 树的总层数 根节点: 最顶层的节点 左子节点: 左下方的节点 右子节…

优维低代码:Redirect 路由重定向If 条件渲染

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 连载…

2022年超实用的推特营销策略

Twitter推广需知的13条基础知识&#xff1a; 1、Twitter日活用户达1亿 2、Twitter月活用户3.25亿 3、Twitter广告价格比其他渠道便宜33% 4、每天产生5亿条推文 5、Twitter推广能够提高29%的线下交易 6、37%的Twitter用户在18到29岁之间 7、86%的带链接推文会比普通推文效…

Cerebral Cortex:调节γ振荡可以促进大脑连接性而改善认知障碍

摘要 老年痴呆症造成了巨大的全球经济负担&#xff0c;但目前还缺乏有效的治疗方法。最近的研究表明&#xff0c;脑电活动的伽马波段波&#xff0c;特别是40赫兹振荡&#xff0c;与高阶认知功能密切相关&#xff0c;可以激活小胶质细胞清除淀粉样蛋白&#xff0d;β沉积。本研究…

Flowable 中的网关、流程变量以及历史流程

今天这篇文章&#xff0c;松哥和大家梳理一下 Flowable 中的网关、流程变量以及历史流程的玩法。 1. 三大网关 Flowable 中网关类型其实也不少&#xff0c;常见的主要有三种类型&#xff0c;分别是&#xff1a; 排他网关并行网关包容网关 这三个里边最常用的当然就是排他网关…

Cesium中的DataSource和Entity关系

本章主要探讨一下Cesium中的DataSource和Entity。 介绍 首先简单说一下Entity与Primitive。 Cesium为开发者提供了丰富的图形绘制和空间数据管理的API&#xff0c;可以分为两类&#xff0c;一类是面向图形开发人员的低层次API&#xff0c;通常被称为Primitive API&#xff0…