前端须要知道的Nginx入门知识

Nginx简介

Nginx是一个高性能的HTTP和反向代理服务器,具备高并发、稳定、支持热部署等特色。咱们经常使用它来进行负载均衡、反向代理和缓存HTTP请求等。html

Nginx架构

Nginx选择的进程模型和事件模型与前端开发者熟知的nodejs很类似,都是采用异步非阻塞的方式。Nginx在启动后会开启一个master进程和多个worker进程。其中惟一的master进程的主要做用是用来管理下面的多个worker进程,它并不参与具体的事件处理过程。而这多个worker进程之间是平等的关系,他们独立地竞争来自客户端的请求且同一个请求只能在某一个worker进程中被处理。下面一张图能够形象说明:前端

在这里插入图片描述

这里能够认为master进程是整个程序的入口,全部的请求都经它手,再分配给下面的worker进程。另外master进程能够管理worker的状态,当某个worker进程挂掉后,master进程须要关掉它并重启一个。node

Nginx的高并发性就得益于这种进程模型。但有些传统开发者这时就会产生一个疑问:当master手下的worker进程都在工做时,新进来的请求不就没地方处理了吗?这样何来高并发呢?其实这个问题的答案就是异步非阻塞。以往咱们处理一个请求时,须要接受数据,而后进行i/o处理后再返回数据,期间这个i/o操做就占用了大部分的时间。而Nginx的异步非阻塞方式就是当发生i/o阻塞时,worker进程就去处理其余没有阻塞的事件。而这个阻塞完成后再以异步的方式通知到worker进程。至关于准备好的事件源源不断地进入队列来等待worker进程处理,而worker进程也能够节省等待i/o阻塞的时间。nginx

所以,通常推荐nginx设置worker的个数为CPU的核数,这样一个CPU对应一个worker进程,不断地去处理已准备完毕的事件,也不会出现多个进程竞争一个CPU的状况。后端

Nginx的配置系统

了解了nginx的原理后,对于不是运维的同窗来讲,平时咱们与nginx打交道最多的地方仍是它的配置文件。Nginx的配置系统通常由一个主配置文件nginx.conf和一些额外的辅助配置文件构成,这些配置文件都是纯文本形式,位于Nginx安装目录的conf目录下。 Nginx的配置文件由相似于字符串的简单指令行和配置块构成。对于简单配置,指令以分号结尾,由配置指令和参数两部分组成,例如:api

worker_processes  8
复制代码

该指令由名为worker_processes的指令和值为8的参数组成,表示Nginx要开启的worker进程个数为8个。 除了简单指令外,Nginx配置还包含一些由大括号括起来的复合配置块。这些配置块的大括号包起来的地方表示处于必定的做用域中,其中的内容通常也是一行行简单指令。例如:跨域

http {
	charset utf-8;
}
复制代码

表示所启用的http服务器使用utf-8编码。数组

Nginx经常使用的几个配置块有:http、server、location、upstream等。这些配置块能够按照必定的规则进行相互嵌套,例如若是该http服务支持多个虚拟主机,则http上下文中能够出现多个server上下文。在平常工做中,只要咱们熟悉了经常使用的配置指令,就能够实现大部分功能。附上查询文档:Nginx中文文档nginx.conf中文详解浏览器

Nginx与前端开发

做为前端开发,掌握Nginx的基本使用方式能够大大增强咱们的开发效率。缓存

  1. 反向代理 前端开发常常会遇到的一个问题就是访问后端资源时出现跨域问题,跨域问题在此就不详述,咱们知道它是因为浏览器的安全资源策略而产生的。而Nginx的反向代理偏偏避开了这一点。所谓反向代理就是Nginx代替客户端去向后端请求接口数据,而后再返回给客户端,这样就能避开浏览器的安全资源策略,配置例子:
location ^~ /api {
	proxy_pass https://test.com/;
}
复制代码

该配置会代理path为/api开头的请求,并返回https://test.com/返回的数据。

  1. 负载均衡 负载均衡就是将请求平均分摊到多个服务器上,从而避免某个服务器因请求量过多而超载。例如:
upstream test {
	ip_hash;
	server 10.100.100.1;
	server 10.100.100.2;
}
location /test {
	proxy_pass http://test;
}
复制代码

该配置表示路径为test的请求会根据必定的规则分配给10.100.100.1和10.100.100.2这两台服务器。这些规则除了该配置中的ip_hash方式,还有url_hash、指定权重方式等。

  1. 内网访问 咱们常常会遇到某些公司资源只容许内网访问的状况,这时能够经过location的deny和allow指令来简单实现:
location / {
	allow 10.100.0.1;
	allow 10.100.0.2;
	deny all;
}
复制代码

allow和deny指令采用从上到下优先匹配的方式,一旦匹配到就跳出。该配置表示只容许10.100.100.1和10.100.100.2这两个ip访问。

除了以上的几种经常使用功能,Nginx还能够实现图片处理服务、压缩数据、适配多端环境等功能。并且这些功能只须要熟练使用配置指令便可实现。

相关文章
相关标签/搜索