文档章节

NGINX的几个应用场景

o
 osc_y8yehimr
发布于 2019/03/20 15:21
字数 1304
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

NGINX的几个应用场景

两个参考地址:

NGINX的百度百科:https://baike.baidu.com/item/nginx/3817705?fr=aladdin

NGINX的中文网站:http://www.nginx.cn/doc/

一、Web服务器

场景需求

网站实现动静分离,目的是让网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。

安装在服务器上得(Linux服务器)http和反向代理服务组件,是一个负载均衡服务,用户访问服务器尤其在高并发得时候很有作用,可以用户访问静态资源和动态请求分开,分配给不同得执行单元,提高响应速度;

实现方式

使用静态服务器及反向代理2个功能,静态资源由NGINX本地提供,动态的资源反向代理到后端的TOMCAT提供,其中TOMCAT可以和NGINX在同一台服务器也可以在不同服务器上 。


二、反向代理

场景需求

业务服务器不能直接被外部网络访问,即不能直接映射外网ip,需要一台代理服务器,而代理服务器能被外部网络访问同时又和业务服务器网络联通。

实现方式

使用反向代理功能,将NGINX服务器映射外网ip,业务服务器无需映射外网ip,外网用户访问时首先访问NGINX服务器,然后再由NGINX服务器访问业务服务器资源后转发给用户,目前主流推荐采用此方案,这样既满足了业务需外网访问的需求,又满足业务服务器的安全。


三、统一访问入口

场景需求

多套业务系统需使用同一个ip或者域名进行访问,以不同后缀进行区分,需要一台NGINX服务器做统一的访问入口。

实现方式

使用反向代理功能,将所有NGINX服务器作为外网或内网用户统一的访问入口,然后根据设置的localtion规则匹配不同的后缀转发至不同的业务服务器。通常和上一个反向代理场景结合使用实现使用一个域名来访问多个业务系统,同时甚至还可以实现统一的https访问,实现方式为在NGINX服务器上配置证书,后端所有业务服务器无需每台额外配置证书即可实现https访问。

四、负载均衡

场景需求

主流分布式架构方案中实现将请求按一定的策略分发至后端多台业务服务器,实现业务服务的高可用及高并发。

实现方式

实际相当于使用反向代理和负载均衡2个功能,根据配置的url后缀规则转发至upstream中各服务器列表,默认按轮询策略,同时还支持权重和ip_hash ,有redis缓存登录seesion的方案中推荐使用轮询策略,否则使用ip_hash策略实现同一ip的用户请求固定至后端同一台服务器


五、解决浏览器跨域问题

场景需求

跨域是指a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,或是a页面为ip地址,b页面为域名地址,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。跨域有很多解决办法,NGINX只是解决办法其中之一,适用于不改目标服务器配置,又能提供搭建一个中转NGXIN服务器的场景。

实现方式

使用NGIXN反向代理功能,如下图某项目实际案例,需实现访问主程序业务服务A中首页桌面嵌套业务服务B的相关页面,使用NGINX作为统一入口,当配套到业务服务A嵌套页面url后缀时转发至业务服务B。相当于NGINX服务器欺骗了浏览器,让它认为这是同源调用,从而解决了浏览器的跨域问题。此案例中3个服务在同一台服务器上也产生跨域问题,针对3个服务在不同服务器的场景此方案也适用,原理是一样的。


六、行为分析

场景需求

需统计整个系统访问的浏览器信息、IP、地理位置、操作系统等信息作为项目上大数据展示的初始数据来源。

实现方式

通常搭配反向代理、统一访问入口的场景,使用NGINX的日志及地理位置库插件来采集信息,然后由eCloud平台进行初步分析后供大数据平台采集和展示。主流发布的一键部署包已包含地理位置库插件。

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

告别传统机房:3D 机房数据可视化实现智能化与VR技术的新碰撞

前言 随着各行业对计算机依赖性的日益提高,计算机信息系统的发展使得作为其网络设备、主机服务器、数据存储设备、网络安全设备等核心设备存放地的计算机机房日益显现出它的重要地位,而机房...

xhload3d
昨天
13
0
如何使用.css()应用!important? - How to apply !important using .css()?

问题: I am having trouble applying a style that is !important . 我在应用!important样式时遇到麻烦。 I've tried: 我试过了: $("#elem").css("width", "100px !important"); This doe......

富含淀粉
昨天
5
0
spring源码解析-xml配置文件读取

整个 XML配置文件读取的大致流程如下: 通过继承自AbstractBeanDefinitionReader中的方法,来使用ResourLoader将资源文件路径转换为对应的Resource文件(读取资源文件并将其转为Resource) ...

wc_飞豆
昨天
16
0
salesforce community cloud 1

NO.1 Universal Containers has a Community for their partners. They would like to add a new partner company and grant their users access to the Community. What is the first step ......

jinzongyu
昨天
11
0
如何使用PHP计算两个日期之间的差异? - How to calculate the difference between two dates using PHP?

问题: I have two dates of the form: 我有两个日期格式: Start Date: 2007-03-24 End Date: 2009-06-26 Now I need to find the difference between these two in the following form:......

技术盛宴
昨天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部