nginx反向代理与缓存功能

目录

一,正向代理和反向代理

1,正向代理概述

2,反向代理概述

二,配置实战

1,实现反向代理负载均衡

三,nginx配置跨域cors

1,跨域的定义

2,同源的定义

3,不同源的限制

4,nginx解决跨域的原理

5,案例


一,正向代理和反向代理

1,正向代理概述

正向代理是一个位于客户端和目标服务器之间的代理服务器。为了从目标服务器得到目标,客户端向代理服务器发送一个请求,并且指定目标服务器,再代理向目标服务器转发请求,将得到的目标返回给客户端。

正向代理的作用

为防火墙的内部局域网客户端提供访问Internet的途径

可以使用缓冲特性减少网络运用率

访问受地理位置限制的网络

运用代理后会隐藏真实的IP地址

2,反向代理概述

反向代理指的是代理外网用户的需要到内部的指定的服务器,并将数据返回给客户的一种方式

客户端不直接和后端服务器进行通信,而是和反向代理服务器进行通信,隐藏了后端服务器的IP地址

反向代理可实现的功能

反向代理的主要作用是提供负载均衡和高可用性

负载均衡:nginx可以将传入的需要分发给多个后端服务器,以平衡服务器的负载,提高系统性能和可靠性

缓冲功能:nginx可以缓存静态文件和动态页面,减轻服务器的负载,提高响应速度

动静分离:将动态生成的目标和静态资源,分别存放在不同房的服务器和路径之内

多站点代理:nginx可以代理多个域名和虚拟主机,讲不通的需要转发到不同的后端服务器之内,实现多个站点的共享端口

二,配置实战

1,实现反向代理负载均衡

nginx可以基于nginx_http_upstream_module模块提供服务器分组转发,权重分配,状态检测,调度算法等高级功能

基本原理:nginx的负载均衡原理是基于反向代理和事件驱动的机制,当客户端发送需要时,nginx作为反向代理服务器接收需要,并根据配置的负载均衡算法将需要转发到后端的多个服务器之内,实现负载均衡

三,nginx配置跨域cors

1,跨域的定义

同源策略限制了从同一个源加载的文档和脚本怎么和来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安保机制。通常不允许不同源间的读操作

2,同源的定义

两个页面的协议,端口和域名都相同,则两个页面具有相同的源

http://store.company.com/dir/page.html为例:

http://store.company.com/dir2/other.html为同源

http://store.company.com/secure.html为不同源,因为协议不同

http://store.company.com:81/dir/etc.html为不同源,因为端口不通

http://news.company.com/dir/other.html为不同源,因为主机不同

3,不同源的限制

web数据层面,同源策略限制了不同源的站点读取当下站点的cookie,indexDB,localstorage等数据

dom层面,同源策略限制了来自不同源的javascript脚本对当下dom对象读和写的操作

网络层面,同源策略限制了通过xmlhttprequest等方式将站点的数据发送给不同源的站点

4,nginx解决跨域的原理

浏览器的同源策略限制了跨域需要,但当用nginx作为代理服务器时,浏览器发送的需要实际上是发送到与前端页面同源的nginx服务器。nginx再将需要转发到真正的目标服务器,目标服务器返回的响应再通过nginx返回给浏览器。从浏览器的角度看,它只和同源的nginx服务器进行交互,从而躲过了cors限制

5,案例

一端的server的域名为:fe.server.com

后端服务的域名为:dev.server.com

现在fe.server.com对dev.server.com发需要一定会出现跨域

现在我们只需要打开一个nginx服务器,将server_name设置为fe.server.com在设置相应的location以拦截前端需要跨域的需要,最后将需要代理回dev.server.com

打赏链接:

相关推荐
拾光Ծ2 分钟前
【Linux】Ext系列文件系统(一):初识文件系统
linux·运维·服务器·硬件架构·ext文件系统
天荒地老笑话么3 分钟前
Vim核心快捷键与运维实战指南
运维·vim·excel
IT19959 分钟前
Linux笔记-使用systemd管理进程
linux·运维·笔记
Web极客码9 分钟前
WordPress 在哪里存储网站上的图片?
运维·服务器·wordpress
杜子不疼.16 分钟前
用Claude Code构建AI内容创作工作流:从灵感到发布的自动化实践
运维·人工智能·自动化
草莓熊Lotso16 分钟前
从零手搓实现 Linux 简易 Shell:内建命令 + 环境变量 + 程序替换全解析
linux·运维·服务器·数据库·c++·人工智能
人工智能训练8 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
微露清风9 小时前
系统性学习Linux-第二讲-基础开发工具
linux·运维·学习
阳光九叶草LXGZXJ10 小时前
达梦数据库-学习-48-DmDrs控制台命令(同步之Manager、CPT模块)
linux·运维·数据库·sql·学习
小二李11 小时前
第11章 nestjs服务端开发:登录鉴权
运维·服务器