2.10.1 Nginx代理



1.Nginx

1.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网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

1.2 Nginx-特点

  1. 占用内存少 不超过2M tomcat服务器占用内存 200M
  2. 并发能力强 3-5万次/秒 tomcat 支持的并发能力 220-260个/秒 调优1000个/秒
  3. 开发语言 C语言开发 tomcat是java写的

知识点:

  1. 并发能力: 多个用户同时访问服务器.
  2. 并行 计算机中的一种处理方式.

2.Nginx-代理

2.1 问题描述

需求: 图片需要进行回显 难题: 网络地址需要与物理地址进行映射
网络地址: http://image.jt.com/2021/11/16/64e19fa13e474ecca28d64e85b0a9312.jpg
物理地址: E:\project3\images\2021\11\16/64e19fa13e474ecca28d64e85b0a9312.jpg

问题1: 能否将物理地址传给用户,用户通过物理地址直接访问!!! 不可以

图片获取的步骤:

  1. 用户通过网络地址访问服务器: http://image.jt.com/2021/11/16/64e19fa13e474ecca28d64e85b0a9312.jpg
  2. 通过某种机制,将域名动态转化为本地磁盘地址.http://image.jt.com转换为D:\project3\images
  3. 根据磁盘地址信息.找到图片 回传给用户,即用户可以查看到图片.

2.2 反向代理(nginx)

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

特点:

  1. 反向代理服务器介于用户和目标服务器之间
  2. 用户的资源从反向代理服务器中获取.
  3. 用户不清楚真实的服务器到底是谁. 保护了服务器的信息. 称之为服务器端代理.
    请添加图片描述

2.2.3 正向代理(扩展)

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

特点:

  1. 反向代理服务器介于用户和目标服务器之间
  2. 用户的资源从正向代理服务器中获取.
  3. 客户端通过正向代理服务器,指向目标服务器.(用户非常清楚的了解目标服务器的存在.) 服务器端不清楚到底是谁访问的服务器.以为只是代理服务器访问.

实际应用:
请添加图片描述

2.2.4 关于正向和反向说明

说明: 每一次请求服务器,都伴随着正向代理和反向代理.
正向主要提供网络服务, 反向主要提供数据支持.请添加图片描述

2.3 Nginx 安装和使用

自行到其官网下载安装nginx程序:
在这里插入图片描述

2.3.1 关于Nginx启动问题说明(系统问题)

Nginx默认启动端口为80端口,当80端口已被占用的时候,将无法启动,我们可以通过下方的步骤解决此问题:

步骤1: 在doss命令窗口中查询 80端口被哪个进程占用
请添加图片描述
步骤2: 关闭进程
请添加图片描述
步骤3: 如果80端口 被PID=4占用,则需要升级驱动配置.
请添加图片描述

2.3.2 关于Nginx服务器

路径: 不要出现中文/空格/特殊字符,不要放到C盘中,C盘中的系统文件目录经常会包含空格,会导致Nginx启动异常。

在这里插入图片描述

浏览器中输入localhost:80后可以正常访问上述页面,那么我们的Nginx就启动成功了。

2.3.3 关于Nginx 服务器进程项说明

说明: 主进程占用内存大,守护进程占用内存小.
规则:

  1. 主进程主要提供反向代理服务.
  2. 守护进程 防止主进程意外关闭.请添加图片描述
    错误的启动方式: 如图启动了多次.必然会对后续的操作产生影响, 所以每次启动只启动一次,如果想要关闭多余的启动,需要先关闭守护进程后再关闭nainx进程。
    请添加图片描述

2.3.4 Nginx服务器命令

nginx 指令说明: 需要在nginx的根目录中执行如下的命令
在这里插入图片描述

指令:

  1. 启动nginx 服务器 start nginx 执行命令后没有报错提就是启动成功了
  2. 重启nginx 服务器 nginx -s reload
  3. 关闭nginx 服务器 nginx -s stop

请添加图片描述

2.4 Nginx 反向代理案例

2.4.1 入门案例

其核心配置文件在如图所示目录中:
在这里插入图片描述

关键字:

  1. events 可以配置nginx 的环境
  2. http 请求协议. nginx 可以接收http请求规则, 协议有且只有一份.
  3. server 一个反向代理服务,就是一个server
  4. listen nginx中一般的监听端口号:80
  5. server_name nginx拦截URL中的哪个请求.
  6. location 拦截服务之后,开始反向代理配置的核心关键字
  7. / 需要拦截的请求的路径 /拦截根目录
    /images 拦截images请求路径.
  8. root root代表反向代理的是一个文件夹
  9. index 反向代理时 默认加载的页面.
events {
    worker_connections  1024;
}

表明其支持最大连接数为1024个,如果超出,则多出的连接需要等待,需要注意,我们更改连接数时,一般使用翻倍扩容,例如改为2048,3072等,不建议使用其他数量进行扩容。

http {
server {
    	# 监听80端口
        listen       80;
        # 拦截的域名
        server_name  localhost;
		# 拦截所有的请求路径/ 根目录
        location / {
        	#代理的是一个目录
            root   html;
            #默认页面 
            index  index.html index.htm;
        }
     }
}

其也可以支持HTTPS等协议规则,下配置文件下方的注释中我们可以看到,我们的协议有且仅有一份,在协议中,可以添加多个反向代理服务(server),反向代理服务中监听端口号一般为80,不建议随意修改,会引发很多其他问题;通过设置拦截URL中的设置的请求,来实现反向代理服务。

当用户在网页访问localhost:80时,请求与nginx配置相匹配,所以会代理到默认的index.html页面:
在这里插入图片描述

修改上述html文件,我们默认访问页面也会出现变化,此时反向代理已经成功。

2.4.2 代理图片

  1. 请求地址: http://image.jt.com/2023/03/30/c0397cecee884801b71c5d2d1260a015.jpg
  2. 磁盘地址: file:///D:/project3/images/2023/03/30/c0397cecee884801b71c5d2d1260a015.jpg
  3. 代理规则: http://image.jt.com 代理到 D:/project3/images
#配置图片代理  写完之后记得保存 ctrl+s
	server {
		listen 80;
		server_name image.jt.com;
		location / {
			root D:/project3/images;
		}
	}

2.4.3 图片代理流程

请添加图片描述

原本我们发起请求时需要通过外网/DNS进行域名解析,然后转发到NGINX代理服务器,但是因为我们并没有购买域名,所以会出现无法解析找不到网页的报错。

系统开发者出于方便我们测试的目的,提供了通过HOSTS文件实现域名与IP映射的功能,从而可以让我们完成本地的测试。

2.4.4 修改hosts文件

位置: C:\Windows\System32\drivers\etc
请添加图片描述
修改hosts文件

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

2.4.5 关于hosts文件权限说明

  1. 检查hosts文件是否只读.
    请添加图片描述

  2. 开放所有用户的权限
    请添加图片描述

2.4.6 页面效果展现

请添加图片描述

3.关于反向代理配置问题总结

  1. 检查后端URL地址是否正常
    动态获取路径: http://image.jt.com/2021/11/16/8d275bd4fba243ee8cb9ec943a40c272.jpg

  2. 检查域名与IP的映射关系
    2.1 检查hosts文件 域名与IP是否正确
    2.2 检查域名与nginx反向代理的域名是否正确.

请添加图片描述
3. nginx映射找不到图片
3.1 检查磁盘路径的图片是否正常 file:///E:/project3/images/2021/11
/16/8d275bd4fba243ee8cb9ec943a40c272.jpg
3.2 着重检查 nginx反向代理的配置信息.
3.3 关闭所有nginx服务器. 之后重启nginx (多启/更新不及时/配置文件异常)

请添加图片描述

4.域名实现前端/后端访问

4.1 域名实现前端访问

域名: www.jt.com:80/443
代理服务器: http://localhost:8080 通过域名,访问后端服务器

我们这里需要将www.jt.com:80/443域名代理到http://localhost:8080服务器,首先我们需要设置nginx.conf文件:

#配置图片代理  写完之后记得保存 ctrl+s
	server {
		listen 80;
		server_name image.jt.com;
		location / {
			root D:/project3/images;
		}
	}
	
	#配置前端服务器代理  www.jt.com  localhost:8080
	server {
		listen 80;
		server_name www.jt.com;
		location / {
			#代理请求协议 
			proxy_pass http://localhost:8080;
		}
	}

此前我们通过设置 root 路径 来设置图片的访问路径,现在我们通过 proxy_pass 域名 来设置访问前端的访问路径。然后我们通过下面的链接测试代理效果:

前端测试效果: http://www.jt.com
请添加图片描述

4.2 域名实现后端访问

域名: manage.jt.com:80/443
代理服务器: http://localhost:8091 通过域名,访问后端服务器

我们这里需要将manage.jt.com:80/443域名代理到http://localhost:8091服务器,首先我们需要设置nginx.conf文件:

	#配置后端服务器代理
	server {
		listen 80;
		server_name manage.jt.com;
		location / {
			#代理请求协议 
			proxy_pass http://localhost:8091;
		}
	}

这里因为后端并没有具体的页面,所以我们通过访问具体的方法获取后端的数据来测试是否成功实现代理效果,后端访问效果: http://manage.jt.com/rights/getRightsList

请添加图片描述

4.3 关于端口号相关说明

  1. nginx 监控端口号 80
  2. VUE客户端 服务端口号 8000 类似于mysql的SqlYog工具
  3. 前端项目端口号 8080 VUE客户端工具提供的服务项 静态资源文件
  4. 后端服务器端口号 8091 YML配置文件手动指定的. jar包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值