• nginx 反向代理 负载均衡 动静分离


    一样东西的诞生通常都是为了解决某些问题,对于 Nginx 而言,也是如此。

    比如,你出于无聊写了一个小网站,部署到 tomcat 之后可以正常访问

    但是后来,你的这个小网站因为内容很诱人逐步的火了,用户越来越多,并发量也慢慢增大,此时一台服务器已经满足不了网站的需求了。

    你不能眼睁睁的看着你的“孩子”被压垮呀,于是乎,一咬牙又花钱加了几台服务器。

    一、什么是Nginx

    Nginx

    Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,在微服务架构中,Nginx作为客户端请求的第一层中间件,通常将请求转发代理给网关。一般Nginx运用的主要场景有反向代理、负载均衡、动静分离等,在微服务架构如下:
    在这里插入图片描述

    其特点是占用内存少,并发能力强,运行还很稳定,几乎可以做到7x24h不间断运行,即使运行数个月也不需要重启。而且,还能在服务不间断的情况下进行软件版本的升级。

    Nginx代码完全用C语言编写,官方数据测试表明能够支持高达50000个并发连接数的响应。

    反向代理

    在这里插入图片描述
    为了安全起见,一般我们不会将应用服务器内网地址暴露给外界,此时就让Nginx作为代理来访问内网地址。而Nginx的IP地址可以作为公网IP暴露给外界使用,这样就屏蔽了内网服务器信息。例如:
    在这里插入图片描述

    正向代理:访问www.google.com 需要正向代理,访问的目的地不发生变化 

    • 首先在本机修改hosts文件
      路径为:C:\Windows\System32\drivers\etc\hosts
      添加以下内容:
    1. # 192.168.152.160是远程Nginx服务器地址
    2. 192.168.152.160 gulimall.com

    当客户端输入 gulimall.com时,通过本地域名映射规则,解析出Nginx服务器地址

    • 设置Nginx反向代理
      修改nginx.conf的server段
    1. listen 80;
    2. server_name gulimall.com;
    3. location / {
    4. #代理给内网服务地址
    5. proxy_pass http://172.20.10.3:8000; #商品服务的地址
    6. }

    这样,我们就实现了Nginx的反向代理,是不是很简单呢?

    三、负载均衡

    现在有好几台服务器了,也有代理服务器了。但是因为你预算有限,后加的几台服务器配置有高有底,这时候如果能让配置高的服务器多承担点压力,让配置低的少承担点压力就好了。

    Nginx的负载均衡就可以完成这样的需求。

     在 conf.d 目录下创建 gulimall.conf       ---  操作 cp defaut.conf gulimall.conf

      gulimall.conf 配置文件如下

    1. listen 80;
    2. server_name gulimall.com;
    3. location / {
    4. #代理给内网服务地址
    5. proxy_pass http://gulimall; #商品服务的地址
    6. }

      nginx.conf 配置文件如下  选择的默认负载均衡:轮询

    1. upstream gulimall{
    2. server 172.20.10.3:88;
    3. server 172.20.10.3:89;
    4. }

     网关的配置文件 application.yml文件如下(header.host=gulimall.com)

    1. spring:
    2. application:
    3. name: gulimall-gateway
    4. cloud:
    5. gateway:
    6. routes:
    7. - id: gulimall_host_route
    8. uri: lb://gulimall-product
    9. predicates:
    10. - Host=gulimall.com,item.gulimall.com

    四、动静分离

    你的小网站里有些请求是需要后台处理的,但是有些请求是不需要的,比如 css、html、jpg、js等文件,这些统称为静态文件

    Nginx可以根据一定规则把不变的资源和经常变的资源区分开,做好了拆分之后,我们就可以根据静态资源的特点将其做缓存操作,从而提高资源响应的速度。

      gulimall.conf 配置文件如下

    1. location /static/ {
    2. root /usr/share/nginx/html;
    3. }

    把对应的静态文件放在/usr/share/nginx/html/即可

    OK,通过动静分离,你的小网站响应速度也上去了,用户体验更好了,你终于送了口气。

    --不要用肉体的勤奋,去掩盖思考的懒惰--

  • 相关阅读:
    聊一聊Spring 事务的相关操作
    655 输出二叉树——Leetcode天天刷(2022.8.22)【DFS】
    JAVA 0基础 数据类型 整数型
    初识多线程
    详细全面的postman接口测试实战教程
    组合数的求解(打表,逆元,Lucas 定理,大整数求解)
    vue3面试题
    odoo16前端框架源码阅读——env.js
    自学软件测试的3个技巧,萌新必看!
    Java入坑之语法糖
  • 原文地址:https://blog.csdn.net/weixin_42383680/article/details/133300980