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 小时前
在Ubuntu 2.04上如何按照x86_64架构编译libmodbus库
linux·运维·ubuntu
Tim风声(网络工程师)8 小时前
排查内网互联网访问流程
运维·服务器·网络
坚持就完事了9 小时前
Linux中如何添加环境变量
linux·运维·服务器
AC赳赳老秦10 小时前
政企内网落地:OpenClaw 离线环境深度适配方案,无外网场景下本地化模型对接与全功能使用
java·大数据·运维·python·自动化·deepseek·openclaw
l1t10 小时前
mingw和Linux中的gcc和llvm编译器编译的pocketpy执行同一个python脚本的不同效果
linux·运维·python
ITyunwei098710 小时前
团队管理与人才发展:如何打造一支“召之即来,来之能战”的铁军?
大数据·运维·人工智能
白緢10 小时前
一、Linux 基础入门
linux·运维·服务器
Deepoch11 小时前
面向工业现场自主运维:Deepoc 具身模型开发板的端侧智能升级路径
运维·人工智能·科技·巡检机器人·deepoc
菜菜艾11 小时前
自动化环境补丁更新系统
linux·运维·bash·运维开发
江上清风山间明月11 小时前
Nginx基于域名区分的多网站部署
运维·nginx·部署·php·多个网站