目录
一,正向代理和反向代理
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
打赏链接:
