Nginx介绍
定义:一个非常 轻量级的HTTP服务器, 是一个高性能的HTTP和反向代理服务器!
特性:
高性能,稳定性,丰富的功能,简单的配置和低资源消耗。
原理
Nginx有一个主线程和几个工作线程。
主线程是加载和验证配置文件、维护工作线程。
工作线程处理实际的请求,Nginx 采用基于事件的模型和依赖操作系统的机制在工作线程之间高效地分发请求。工作线程的数量可配置,也可自动调整为服务器CPU的数量。
Nginx及其模块的工作方式由配置文件确定!
Nginx实质
Nginx配置的核心是定义要处理的URL以及如何响应这些URL请求,定义一系列的虚拟服务器(Virutal Servers) 控制来自特定域名或者IP的请求处理!!
换句话说:
Nginx 配置为 Web 服务器就是定义处理哪些 URLS 和如何处理这些URLS 对应的请求。具体来说,就是定义一些虚拟服务器(Virtual Servers),控制具有特定 IP 和域名的请求。
虚拟服务器
1)虚拟服务器定义一系列的location控制处理特定的URI集合。
2) 每一个location定义了对映射到自己的请求的处理场景,可以返回一个文件或代理此请求。
Nginx模块
Nginx 由不同的模块组成,这些模块由配置文件中指定的指令控制。
简单指令和块指令
简单指令一个简单指令包含指令名称和指令参数,以空格分隔,以分号结尾。
块指令:块指令与简单指令类似,但是由大括号({和})包围。 如果块指令大括号中包含其他指令,则称该指令为上下文(如: events, http, server 和 location)
指令一般有以下这些:
listen: 配置块使用 listen 命令监听本机 IP 和端口号
server_name: 用于区分,当多个server的IP和端口号一样时, Niginx通过请求头中的Host区分!!!!
location: 定义了对映射到自己的请求的处理场景。
当Nginx选定了一个server(虚拟服务器)之后,就会根据URIs去选择合适的location来决定代理请求或返回文件。
location支持前缀或正则。
location必须是在一个server里面。
作用一 处理静态内容
http块中创建server块指令,再设置location块指令:
server{
location/{
root /data/www;
}
location /images/ {
root /data;
}
}
上面的location块指定/前缀与请求中的URI对比。 匹配的请求将会被添加到root指令中指定的路径,这就是本地文件系统的路径!!
比如上面:
http://localhost/
匹配
/data/www/
Nginx采用最长前缀匹配原则
也就是说,如果URI匹配多个location,Nginx采用最长前缀匹配原则。
即上面的
location /images/ {
}
location / {
}
URI如果是/image/这样的请求,优先匹配/image/ location。 / location不会被使用
配置代理服务器
server{
location / {
proxy_pass http://localhost:8080/;
}
location ~\.(git|jpg|png){
root /data/images;
}