【云原生】使用nginx反向代理后台多服务器

这篇具有很好参考价值的文章主要介绍了【云原生】使用nginx反向代理后台多服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

随着业务发展, 用户访问量激增,单台服务器已经无法满足现有的访问压力,研究后需要将后台服务从原来的单台升级为多台服务器,那么原来的访问方式无法满足,所以引入nginx来代理多台服务器,统一请求入口。

什么是nginx

Nginx[engine x]是一个免费开源Web服务器,是一个HTTP和反向代理服务器,邮件代理服务器, 和一个通用的 TCP/UDP 代理服务器,最初由俄罗斯软件工程师Igor Sysoev撰写。nginx专注于高性能、高并发性和低内存使用率。能够在高并发下给网站提供稳定的服务。

相关概念
  • 正向代理
    请求概述:客户端C知道资源D在服务器A中,但是无法直接访问服务器A,此时知道服务器N与服务器A在同一局域网中,并且可以相互访问,因为客户端C可以访问服务器N,因此客户端C通过服务器N访问服务器A得到资源D
    nginx多个反向代理,云原生,中间件,云原生,nginx,spring boot

理解

  1. 正向代理对于客户端C来说他明确知道他要访问的资源D在哪个服务器上;
  2. 对于服务器N来说他只充当客户端C的中间代理角色;而对于服务器A来说他只知道访问他的资源的是服务器N,根本不知道客户端C的存在。
  • 反向代理
    请求概述客户端C并不知道服务器A和服务器B的存在,客户端C只知道访问服务器N能获得资源D,只不过提供客户端C资源的都来着服务器A或者服务器B
    nginx多个反向代理,云原生,中间件,云原生,nginx,spring boot

理解

  1. 反向代理对于客户端C来说,他是不知道资源D具体在哪里,也不知道具体由谁提供。
  2. 对于服务器N来说每次都接受用户的请求,然后再把请求根据调度策略交给提供资源D的服务器A或者B,对于服务器A和B来说同样也都不知道访问这份资源D的真实用户是谁,只是和服务器N进行交互。
实操nginx代理springboot服务器

注:下文所有服务基于docker环境启动

  • 安装nginx容器
    可参考:Docker安装镜像操作相关命令下滑到第6步
    安装完成后可得到nginx映射在宿主机上相关的文件
    nginx多个反向代理,云原生,中间件,云原生,nginx,spring boot
    并且启动nginx容器,映射端口:9001
    nginx多个反向代理,云原生,中间件,云原生,nginx,spring boot

  • 打包springboot项目并docker运行
    可参考:【云原生】springboot项目打包部署docker镜像

    为了模拟多台服务器,本文通过修改项目端口号(8088、8089),上传打包了两个springboot项目镜像,分别启动了一个容器
    nginx多个反向代理,云原生,中间件,云原生,nginx,spring boot

  • nginx代理配置修改
    进入宿主机中的nginx文件,进入conf文件
    nginx多个反向代理,云原生,中间件,云原生,nginx,spring boot
    打开后编辑default.conf注:对于nginx代理配置,主要修改这个文件)文件
    nginx多个反向代理,云原生,中间件,云原生,nginx,spring boot
    1.模拟正向代理或者说是一对一代理配置内容:

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

   #nginx自带主页面配置
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

   # 本次配置服务器新增内容
    location /boot {
           	proxy_pass http://172.16.0.3:8089/web; # 单个服务器配置
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}

注:配置文件新增内容中 “/boot” 表示为映射到服务器的名称前缀,当代理的服务器增多,根据实际情况自定义不同的名称,便于区分。

  1. 模拟反向代理或者说代理多个服务器配置:
# 新增内容 多个服务器配置
upstream backend {
        ip_hash; #负载均衡策略
        server 172.16.0.3:8089;  # 第一个 Tomcat 服务器的本地端口
        server 172.16.0.3:8088;  # 第二个 Tomcat 服务器的本地端口
}

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

   #nginx自带主页面
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

   #服务器配置
    location /boot {
           # proxy_pass http://172.16.0.3:8089/web; # 单个服务器配置
            proxy_pass http://backend/web; # 多个服务器配置
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

注:上述配置中 “ip_hash” 为nginx的一种负载均衡策略。nginx支持四种负载均衡策略。

  1. 轮询(Round Robin)策略
 upstream backend {
        server 172.16.0.3:8089;  # 第一个 Tomcat 服务器的本地端口
        server 172.16.0.3:8088;  # 第二个 Tomcat 服务器的本地端口
  } 
  1. 最少连接(Least Connections)策略:
  upstream backend {
  	  least_conn;
      server 172.16.0.3:8089;  # 第一个 Tomcat 服务器的本地端口
      server 172.16.0.3:8088;  # 第二个 Tomcat 服务器的本地端口
} 
  1. IP哈希(IP Hash)策略:
   upstream backend {
   	   ip_hash;
       server 172.16.0.3:8089;  # 第一个 Tomcat 服务器的本地端口
       server 172.16.0.3:8088;  # 第二个 Tomcat 服务器的本地端口
 } 
  1. 加权轮询(Weighted Round Robin)策略:
 upstream backend {
     server 172.16.0.3:8089 weight=2;  # 第一个 Tomcat 服务器的本地端口
     server 172.16.0.3:8088 weight=1;  # 第二个 Tomcat 服务器的本地端口
} 

详细解析可参考:Nginx负载均衡多种策略配置

  • 访问服务器
    完成上述nginx配置后,重启nginx容器。
    先不使用代理访问后台客户端:http://ip地址:8088/web/login
    nginx多个反向代理,云原生,中间件,云原生,nginx,spring boot
    使用nginx代理访问客户端:http://ip地址:9001/boot/login

nginx多个反向代理,云原生,中间件,云原生,nginx,spring boot
上述地址中的端口和路由地址都发生了改变,但代理访问客户端与不适用代理返回的页面一致,则nginx代理配置成功


使用nginx代理可以很好的隐藏内部服务器的地址,不暴露在公网中,可配置为内网地址,减少网络请求压力,安全性提高,只需开放代理服务器地址供外部访问即可。文章来源地址https://www.toymoban.com/news/detail-764559.html

到了这里,关于【云原生】使用nginx反向代理后台多服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 使用Nginx反向代理,将React项目打包后部署到服务器的二级子目录

    使用Nginx反向代理,将React项目打包后部署到服务器的二级子目录

    我们上线一个项目的时候如果服务器上只有这一个项目的话可以直接将打包后的代码部署到服务器指定的根目录,然后直接上线看就可以看到,不用配置其他项。 但是,如果服务器有多个项目的话,我们就需要将代码部署到服务器根目录里边的子目录了,而放到子目录的话,

    2024年03月26日
    浏览(15)
  • 【代理服务器】Squid 反向代理与Nginx缓存代理

    【代理服务器】Squid 反向代理与Nginx缓存代理

    如果 Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的 Web 服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。 缓存网页对象,减少重复请求 将互联网请求

    2024年02月12日
    浏览(13)
  • Nginx反向代理服务器简单配置案例

    Nginx反向代理服务器简单配置案例

    --------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------

    2024年02月03日
    浏览(10)
  • Nginx HTTP和反向代理服务器

    Nginx HTTP和反向代理服务器

    1、概念: Nginx  (engine x) 是一个高性能的HTTP和反向代理web服务器。 2、什么是代理服务器: 概念: 代理服务器是介于客户端和Web服务器之间的另一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页信息,而是通过向代理服务器发送请求,信号会先送到代理服务

    2024年02月04日
    浏览(18)
  • nginx 反向代理服务器端口转发问题

    nginx 反向代理服务器端口转发问题

    先介绍一下项目背景,公司里有个外包Saas项目,这里假设为A项目( 前后端不分离 );项目架构大概如下;但是项目部署到生产环境时,那台服务器80端口被其他应用占用了(我尼玛...),nginx监听端口那边只能监听其他端口了,比如监听:18000,通过nginx反向代理将18000端口转发到

    2024年02月04日
    浏览(12)
  • nginx反向代理服务器及负载均衡服务配置

    nginx反向代理服务器及负载均衡服务配置

    一、正向代理与反向代理 正向代理:是一个位于客户端和原始服务器(oricin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。 正向代理的典型用途是为在防火

    2024年02月04日
    浏览(13)
  • 超全Nginx反向代理服务器原理+实战篇

    超全Nginx反向代理服务器原理+实战篇

    1.Nginx简介和安装部署 1.1.什么是Nginx 高性能的[HTTP]和反向代理的web服务器,用c语言编写,高性能支持单机千万级连接,强大的第三方库支持,负载均衡、静态文件服务器等。 1.2.Nginx的用途 搭建前端静态资源服务器、文件服务器 负载均衡Upstream配置实战、后端节点高可用性探

    2024年02月01日
    浏览(13)
  • 轻量级服务器nginx:反向代理的具体配置

    轻量级服务器nginx:反向代理的具体配置

    例如:第一章 Python 机器学习入门之pandas的使用 我们在国内,如果要访问谷歌,那就无法访问,需要借助一个正向代理服务器,先将信息传给代理服务器,代理服务器所在的位置可以访问谷歌,这样就可以做到代理去谷歌取到并返回数据,并把信息发送到自己的终端上。 如果

    2023年04月25日
    浏览(11)
  • Nginx:高性能的Web服务器与反向代理

    在现代互联网应用程序的开发和部署中,选择一个可靠、高性能的Web服务器是至关重要的。Nginx是一个备受推崇的选择,它以其卓越的性能和可靠性在开发者社区中享有盛誉。本文将介绍Nginx的概念、优势,以及如何使用Nginx作为Web服务器和反向代理。 Nginx(发音为“engine X”

    2024年02月19日
    浏览(15)
  • 分布式 - 服务器Nginx:一小时入门系列之HTTP反向代理

    分布式 - 服务器Nginx:一小时入门系列之HTTP反向代理

    1. 正向代理和反向代理 正向代理是 客户端 通过代理服务器访问互联网资源的方式。在这种情况下,客户端向代理服务器发送请求,代理服务器再向互联网上的服务器发送请求,获取资源并返回给客户端。正向代理的典型应用场景是翻墙,即通过代理服务器访问被封锁的网站

    2024年02月14日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包