Nginx代理 机制 与 相关实践

目录

1. 代理机制

1.1 业务说明

1.2 反向代理介绍

1.3 正向代理

1.4 正向/反向代理说明

2.Nginx

2.1 Nginx介绍

2.2 Nginx特点

2.3 Nginx下载

2.4 nginx启动报错说明

2.5 nginx进程项说明

2.6 nginx命令

 2.7 反向代理案例

2.8 实现图片的反向代理

2.8.1 业务说明

2.8.2 图片服务器代理配置

2.8.3 图片回显流程

2.8.4 修改hosts文件

3. 前端项目发布

3.1 关于前端说明

3.2 前端项目发布

3.2.1路径修改

3.2.2 前端项目打包

3.2.3 前端项目发布

3.2.4 前端反向代理

4. 后端发布

4.1 项目部署流程

4.2 部署2台tomcat服务器

4.2.1 去除热部署

4.2.2 动态获取端口

 4.2.3 代码调试

4.3 Nginx实现tomcat集群部署

4.3.1 配置nginx服务器

4.3.2 测试效果

4.4 Nginx负载均衡策略

4.4.1 轮询策略

4.4.2 权重策略

4.4.3 IPHASH策略


1. 代理机制

1.1 业务说明

网络地址: http://image.jt.com/2021/09/09/8a3e2666cfbc4f1c9f0136339d42a562.jpg
磁盘地址: G:/images/2021/09/09/8a3e2666cfbc4f1c9f0136339d42a562.jpg
如果用户直接通过网络地址进行访问,是无法直接获取图片信息. 如果需要获取图片则应该实现 域名与磁盘地址的映射.

1.2 反向代理介绍

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。

特点:
1.反向代理服务器位于用户和服务器之间.
2.用户访问反向代理服务器,就可以获取真实的资源.
3.反向代理机制 用户无需了解真实的服务器信息.
4.反向代理保护了服务器端信息,也称之为服务器端代理.

1.3 正向代理

正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

特点:
1. 正向代理服务器位于用户和服务器之间.
2. 用户发起请求时,非常明确自己访问的服务器到底是谁
3. 真实的服务器不清楚真实的用户是谁.保护了用户的信息.
所以称之为客户端代理.


 

1.4 正向/反向代理说明

说明: 用户每一次请求都包含了正向代理和反向代理.
正向代理一般适用于网络的通信.
反向代理一般适用于向服务器获取信息.

2.Nginx

2.1 Nginx介绍

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

2.2 Nginx特点

  1. nginx是非常优秀的反向代理服务器.
  2. 占用内存少 不到2M     tomcat服务器占用多大内存 200M左右
  3. 并发(负载)能力强 3-5万次/秒   
  4. tomcat服务器并发能力 250-500次/秒 调优之后可以实现1000次/秒
  5. nginx可以当作负载均衡服务器使用.

2.3 Nginx下载

说明:
1.nginx开发语言 C语言,对中文不友好.所以注意程序员操守
2.nginx启动时会默认占用80端口

访问官方网址:nginx: downloadhttp://nginx.org/en/download.html

访问测试:localhost:80

2.4 nginx启动报错说明

说明:nginx启动时会占用80端口.所以需要释放80资源.
步骤1: 查询 80端口被哪个进程占用

 步骤2: 关闭进程

步骤3: 如果80端口 被PID=4占用,则需要升级驱动配置.

2.5 nginx进程项说明

说明: 在windows中nginx服务每次点击启动之后,都会生成2个进程项.
注意事项: 在windows中nginx只能启动一次.
异常信息如下:

 关于启动2项说明:
进程项1: nginx主要进程信息.
进程项2: nginx的守护进程 主要的任务防止主进程意外关闭.
关闭nginx 应该先关闭守护(内存晓得)再关闭主进程(内存大的).

2.6 nginx命令

说明: nginx命令执行 需要nginx.exe所在的根目录中执行.

命令:
1. 启动命令 start nginx
2. 重启命令 nginx -s reload
3. 关闭命令 nginx -s stop
 

 2.7 反向代理案例

说明:

1. nginx反向代理需要http协议支持.
2. server 每个反向代理服务都是一个server.
3. listen 关键字 默认监听80端口.
4. server_name 根据指定的域名进行反向代理
5. location 反向代理时拦截的策略 / 所有的请求
6. root 代表反向代理的是一个目录
7. index 默认访问的页面

反向代理配置:

 http {
	 server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
	 }
}

2.8 实现图片的反向代理

2.8.1 业务说明

磁盘地址:G:/images/2021/09/09/a.jpg
网络地址:http://image.jt.com/2021/09/09/a.jpg

问题: 如何通过网络地址访问磁盘的图片?

1.用户通过域名访问真实的服务器.
2.nginx根据自身的配置进行拦截,根据配置文件将域名http://image.jt.com转化为具体的磁盘地址 G:/
3.根据磁盘地址访问真实的服务器资源.
4/5. 服务器将数据交给nginx,之后nginx将数据返回给用户.至此实现了反向代理.

2.8.2 图片服务器代理配置

注意事项:
1.启动时没有报错信息
2.重启时才会有报错. 所有最好先执行启动,再执行重启

#配置图片服务器
	#拦截域名:http://image.jt.com:80
	#代理路径:E:/images 
	server {
		listen 80;
		server_name image.jt.com;
		location / {
			root  E:/images;
		}
	}

2.8.3 图片回显流程

业务说明: 操作系统为了测试方便,在计算中保留了hosts文件. 该文件的主要的作用就是实现域名与IP地址的映射.但是该映射,只对本机有效.

2.8.4 修改hosts文件

路径: C:\Windows\System32\drivers\etc

#  IP 与   域名映射
#	127.0.0.1       localhost
#	::1             localhost

#图片服务器配置
127.0.0.1       image.jt.com
#前端服务器配置
127.0.0.1       www.jt.com
#后端服务器配置
127.0.0.1       manage.jt.com

hosts文件 解决方案:
1.添加管理权限 选中hosts文件之后 右键属性.

方式2: 以超级管理员的方式运行Switch hosts软件

 

方式3: 添加指定的用户权限 步骤 1.获取当前计算机的名称 PC 2.添加用户信息.
注意事项: 计算机名称不要写中文.

 方式4: 取消只读属性 

 

3. 前端项目发布

3.1 关于前端说明

  1. vue项目开发阶段采用脚手架的方式进行的开发,如果开发完成应该将项目打包编译.编译为浏览器可以识别的静态资源文件 (HTML/CSS/JS)
  2. Nginx可以作为web服务器.并且默认端口号80.

3.2 前端项目发布

3.2.1路径修改

说明: 前端向后端发起请求时,网址 http://localhost:8091/xxxx,实际开发中服务器都是通过域名的方式访问,所以需要将前端的网址统一改为域名.

  • 修改main.js 修改ajax请求的前缀

 

  •  修改AddItem.vue文件 修改文件上传的路径

3.2.2 前端项目打包

通过build方式,将前端项目编译打包.

3.2.3 前端项目发布

说明: 将前端生成的dist目录 复制到nginx根目录中 如图所示:

在这里插入图片描述

 

3.2.4 前端反向代理

需求: 用户通过域名http://www.jt.com 访问系统的首页index.html
配置信息:

#配置前端服务器 www.jt.com
	server {
		listen 80;
		server_name www.jt.com;
		location / {
			root   dist;
			index  index.html;
		}
	}

 页面效果:

4. 后端发布

4.1 项目部署流程

 

4.2 部署2台tomcat服务器

4.2.1 去除热部署

说明: 现在需要准备2台tomcat服务器,需要执行main方法2次.如果有热部署,则修改代码之后重启会影响配置流程. 所有关闭热部署. 

 

4.2.2 动态获取端口

说明: 由于nginx中有负载均衡的策略 所以需要动态获取端口,验证是否负载均衡.

@RestController
public class PortController {

    @Value("${server.port}")
    private Integer port;

    @GetMapping("/getPort")
    public String getPort(){

        return "访问端口:" + port;
    }
}

 4.2.3 代码调试

1.根据8091启动服务器.
2.修改yml文件中的端口号8092,之后再次启动服务
3. 根据端口号测试
http://localhost:9092/getPort

http://localhost:9091/getPort

4.3 Nginx实现tomcat集群部署

4.3.1 配置nginx服务器

#定义tomcat集群
	# 负载均衡策略: 1.轮询策略
	upstream tomcats {
		server 127.0.0.1:8091;
		server 127.0.0.1:8092;
	}
	
	#配置后台服务器 manage.jt.com  8091/8092
	server {
		listen 80;
		server_name manage.jt.com;

		location / {
			#代理的是一个请求路径
			proxy_pass http://tomcats;
		}
	}

4.3.2 测试效果

访问:http://manage.jt.com

实现两台服务器轮询访问的现象

4.4 Nginx负载均衡策略

4.4.1 轮询策略

说明: tomcat服务器依次访问.

#定义tomcat集群
	# 负载均衡策略: 1.轮询策略
	upstream tomcats {
		server 127.0.0.1:8091;
		server 127.0.0.1:8092;
	}

4.4.2 权重策略

说明: 根据权重设定,分配网络请求到不同的服务器中. 值越大访问越多.

#定义tomcat集群
	# 负载均衡策略: 1.轮询策略  2.权重策略
	upstream tomcats {
		server 127.0.0.1:8091 weight=10;
		server 127.0.0.1:8092 weight=1;
	}

4.4.3 IPHASH策略

需求: 如果需要让用户与服务器绑定.则可以使用ip_hash策略
使用说明:
1.方便进行压力测试.
2.某些用户的数据保存到服务器的Session中时,需要绑定数据.
3.公司特殊业务场景可能用到iphash.

#定义tomcat集群
	# 负载均衡策略: 1.轮询策略  2.权重策略  3.iphash策略
	upstream tomcats {
		ip_hash;
		server 127.0.0.1:8091;
		server 127.0.0.1:8092;
	}

算法说明:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值