Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

时间:2021-09-29 17:49:03

个人博客网:https://wushaopei.github.io/    (你想要这里多有)

一、反向代理

反向代理准备工作:

(1)在 liunx 系统安装 tomcat,使用默认端口 8080
tomcat 安装文件放到 liunx 系统中,解压
进入 tomcat 的 bin 目录中,./startup.sh 启动 tomcat 服务器
(2)对外开放访问的端口
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd –reload
查看已经开放的端口号
firewall-cmd --list-all
(3)在 windows 系统中通过浏览器访问 tomcat 服务

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

实现效果1:使用 nginx 反向代理,访问 www.tomcatServers.com 直接跳转到 49.234.111.11:8080(虚拟机的tomcat地址)

1、实验代码

1) 启动一个 tomcat,浏览器地址栏输入 127.0.0.1:8080,出现如下界面

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

2)访问过程的分析
Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离
3) 通过修改本地 host 文件,将 www.tomcatServers.com 映射到 127.0.0.1

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

配置完成之后,我们便可以通过 www.tomcatServers.com:8080 访问到第一步出现的 Tomcat 初始界面。那么如何只需要输入
www.tomcatServers.com 便可以跳转到 Tomcat 初始界面呢?便用到 nginx的反向代理。
 
添加内容在host 文件中:
 192.168.17.129       www.tomcatServers.com
 
注:前者是代理服务地址,后者是暴露在外的访问地址
4) 在 nginx.conf 配置文件中增加如下配置

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

如上配置,我们监听 80 端口,访问域名为 www.tomcatServers.com,不加端口号时默认为 80 端口,故
访问该域名时会跳转到 127.0.0.1:8080 路径上。在浏览器端输入 www.tomcatServers.com 结果如下:
5)最终测试:

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

实验效果2 :

使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中
 
nginx 监听端口为 9001,
 
  访问 http://192.168.17.129:9001/edu/ 直接跳转到 127.0.0.1:8080
  访问 http:// 192.168.17.129:9001/vod/ 直接跳转到 127.0.0.1:8081

2.1 、实验代码

第一步,准备两个 tomcat,一个 8001 端口,一个 8002 端口,并准备好测试的页面
在tomcat的webapps目录下创建edu目录,并创建测试页面

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

第二步,具体配置
1)找到 nginx 配置文件,进行反向代理配置
在 http 块中添加 server{}
Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

location 指令说明

该指令用于匹配 URL。

语法如下:

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

  1. = :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
  2. ~:用于表示 uri 包含正则表达式,并且区分大小写。
  3. ~*:用于表示 uri 包含正则表达式,并且不区分大小写。
  4. ^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字 符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。

注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。

 
2)开放对外访问的端口号 9001 8080 8081
 
4、最终测试

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离
解析:

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

二、nginx 配置实例-负载均衡

1、实现效果

 
1)浏览器地址栏输入地址 http://192.168.17.129/edu/a.html,负载均衡效果,平均 8080和 8081 端口中
 

2、准备工作

 
1)准备两台 tomcat 服务器,一台 8080,一台 8081
2)在两台 tomcat 里面 webapps 目录中,创建名称是 edu 文件夹,在 edu 文件夹中创建页面 a.html,用于测试

3、在 nginx 的配置文件中进行负载均衡的配置

 

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

4nginx 分配服务器策略

随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题,
顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应
足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品,
很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎,
nginx 就是其中的一个,在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服
务,而且 Nginx 提供了几种分配方式(策略):
 
4.1、轮询(默认)
    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
4.2weight
    weight 代表权,重默认为 1,权重越高被分配的客户端越多
     指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。 例如
 
upstream server_pool{
server 192.168.5.21 weight=10;
server 192.168.5.22 weight=10;
}

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

4.3ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。
例如:
upstream server_pool{
ip_hash;
server 192.168.5.21:80;
server 192.168.5.22:80;
}

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

4.4fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream server_pool{
server 192.168.5.21:80;
server 192.168.5.22:80;
fair;
}

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

三、Nginx 配置实例-动静分离

Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用 Nginx 处理静态页面,Tomcat 处理动态页面。动静分离从目前实现角度来讲大致分为两种,一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开。

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用 Expires 来缓存),我这里设置 3d,表示在这 3 天之内访问这个 URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,如果有修改,则直接从服务器重新下载,返回状态码 200。

1、准备工作
liunx 系统中准备静态资源,用于进行访问
 

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

  • 在 image 目录下上传一张图片作为静态资源
  • 在 www 目录下创建一个 a.html 页面作为动态资源
2、具体配置
1)在 nginx 配置文件中进行配置

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

  1. 添加监听端口、访问名字
  2. 重点是添加 location,
  3. 最后检查 Nginx 配置是否正确即可,然后测试动静分离是否成功,之需要删除后端 tomcat服务器上的某个静态文件,查看是否能访问,如果可以访问说明静态资源 nginx 直接返回了,不走后端 tomcat 服务器
3、最终测试
1)浏览器中输入地址
  http://192.168.17.129/image/01.jpg

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

* 因为配置文件 autoindex on

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离

2)在浏览器地址栏输入地址
    http://192.168.17.129/www/a.html

Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离Nginx 笔记(三)nginx 配置实例 - 反向代理、负载均衡、动静分离