69.上线部署(nginx)

本文详细介绍了Nginx的功能,包括其作为高性能Web服务器的角色,支持的正向代理、反向代理、静态资源服务器、负载均衡、Gzip压缩以及解决跨域问题的方法。还探讨了动静分离和解决前端路由刷新404问题的配置示例。
摘要由CSDN通过智能技术生成

nginx

1、nginx 简介

  • 是什么?
    • 一个高性能的 web 服务器,开源免费
  • 作用:
    • 静态资源服务器
    • 反向代理
    • 负载均衡
    • Gzip 压缩

2、正向代理和反向代理

  • 正向代理:隐藏客户端,由代理服务器接收所有客户端的请求,在发送给服务器。服务器并不知道请求是从哪个客户端发送的
    • 如:翻墙工具
  • 反向代理:隐藏服务器,由代理服务器将所有服务器集合在一起,客户端发送请求时并不知道请求哪个服务器,只访问代理服务器,由代理服务器将服务器资源取出然后响应给客户端。
    • 如:解决跨域

3、nginx 常用指令

  • 查看 Nginx 的版本号:nginx -V
  • 启动 Nginx:nginx
  • 快速停止或关闭 Nginx:nginx -s stop
  • 正常停止或关闭 Nginx:nginx -s quit
  • 配置文件修改重装载命令:nginx -s reload

以上指令都需要来到 nginx 目录下执行

执行指令的整个 nginx 目录都不能有任何特殊字符和中文

4、静态资源服务器

  • 作用:部署任意静态资源
    • 例如:博客、网站等
  • 实战:部署前端打包生成的文件(前端网站)
  • nginx 配置
server {
  listen 5000; # nginx 开启的服务器端口号
  server_name localhost; # nginx 开启的服务器域名
  # 所以nginx服务器访问地址就是 http://localhost:5000

  # 处理访问 nginx 服务器的 / 的请求
  location / {
    root 本地磁盘打包生成的dist文件夹路径; # 实际访问的地址是本地磁盘打包生成的dist文件夹路径
  }
}

5、反向代理

  • 作用:利用反向代理解决跨域问题。

  • 实战:解决项目上线时的跨域问题

  • nginx 配置

server {
  listen 5000;
  server_name localhost;

  location / {
    root 本地磁盘打包生成的dist文件夹路径;
  }

  # 处理访问 nginx 服务器的 /prod-api 开头的请求, 转发到目标服务器去
  location /prod-api {
      proxy_pass http://39.98.123.211/; # 转发的目标服务器地址
      rewrite ^/prod-api/(.*) /$1 break; # 重写路径 以^/prod-api/xxx开头的重写为/xxx
  }
}

6、动静分离

  • 概念:把动态请求和静态请求分开,不是讲动态页面和静态页面物理分离,可以理解为 Nginx 处理静态页面,Tomcat 处理动态页面。

    • 例如:访问 html/js/css 这种打包生成的静态资源由 Nginx 服务器处理,如果请求 sku / spu 等动态数据由 Tomcat 服务器处理
  • 实际上已经配置好了,前面我们配置完成后就是动静分离了~

  • nginx 配置

server {
  listen 5000;
  server_name localhost;

  # 静态资源访问地址
  location / {
    root 本地磁盘打包生成的dist文件夹路径;
  }

  # 动态资源的访问地址
  location /prod-api {
      proxy_pass http://39.98.123.211/;
      rewrite ^/prod-api/(.*) /$1 break;
  }
}

7、解决前端路由刷新404问题

server {
  listen 5000;
  server_name localhost;

  location / {
    root 本地磁盘打包生成的dist文件夹路径;
    # 解决前端路由刷新404问题
    try_files $uri $uri/ /index.html;
  }

  location /prod-api {
      proxy_pass http://39.98.123.211/;
      rewrite ^/prod-api/(.*) /$1 break;
  }
}

8、Gzip 压缩

  • 作用:提高传输效率,节约带宽

  • nginx 配置

http {
  # 开启gzip压缩
  gzip  on;
  # 限制最小压缩,小于1字节文件不会压缩
  gzip_min_length 1;
  # 定义压缩的级别(压缩比,文件越大,压缩越多,但是cpu使用会越多)
  gzip_comp_level 3;
  # 定义压缩文件的类型
  gzip_types text/plain application/javascript application/json text/css text/javascript image/jpg image/jpeg image/gif image/png;


  # ...后面配置省略
}

9、负载均衡

  • 概念:nginx 接收到客户端请求,转发到不同的服务器去处理

  • 基本使用

http {
  # 定义服务器均衡服务,名称为guigu
  upstream guigu {
    server localhost:81; # 服务器1
    server localhost:82; # 服务器2
  }

  # ...后面配置省略
}
  • Nginx 负载均衡调度算法

9.1 轮询(默认)

http {
  upstream guigu {
    server localhost:81; # 服务器1
    server localhost:82; # 服务器2
  }

  # ...后面配置省略
}
  • 轮询模式默认服务器权重都是 1,请求时:12121212121212

9.2. 加权轮询(weight)

http {
  upstream guigu {
    server localhost:81 weight=1; # 服务器1
    server localhost:82 weight=3; # 服务器2
  }

  # ...后面配置省略
}
  • 请求时:122212221222

9.3. ip_hash(会话保持)

http {
  upstream guigu {
    ip_hash;
    server localhost:81; # 服务器1
    server localhost:82; # 服务器2
  }

  # ...后面配置省略
}
  • 让相同的客户端 ip 请求相同的服务器

9.4. fair(动态调度算法)

http {
  upstream guigu {
    fair;
    server localhost:81; # 服务器1
    server localhost:82; # 服务器2
  }

  # ...后面配置省略
}
  • 根据后端节点服务器的响应时间来分配请求,响应时间短的优先分配
  • 注意:这是更加智能的调度算法,但 Nginx 本身不支持 fair 调度算法。如果需要使用 fair 调度,必须下载 Nginx 相关模块 upstream_fair
  • 25
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值