一、什么是Nginx
Nginx 是一个免费的,开源的,高性能的HTTP服务器和反向代理,以及IMAP / POP3代理服务器。 Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。
Nginx 有一个主线程( master process)和几个工作线程(worker process)。主线程的目的是加载和验证配置文件、维护工作线程。
工作线程处理实际的请求,Nginx 采用基于事件的模型和依赖操作系统的机制在工作线程之间高效地分发请求。工作线程的数量可配置,也可自动调整为服务器CPU的数量。
Nginx 及其模块的工作方式由配置文件确定。 默认情况下,配置文件名为 nginx.conf。
二、配置文件介绍
Nginx 配置的核心是定义要处理的 URL
以及如何响应这些 URL
请求,即定义一系列的虚拟服务器(Virtual Servers)控制对来自特定域名或者 IP 的请求的处理。
每一个虚拟服务器定义一系列的 location
控制处理特定的 URI 集合。每一个location
定义了对映射到自己的请求的处理场景,可以返回一个文件或者代理此请求。
Nginx 由不同的模块组成,这些模块由配置文件中指定的指令控制。 指令分为简单指令和块指令。
一个简单指令包含指令名称和指令参数,以空格分隔,以分号(;
)结尾。 块指令与简单指令类似,但是由大括号({
和}
)包围。 如果块指令大括号中包含其他指令,则称该指令为上下文(如: events
, http
, server
和 location
)。
配置文件中的放在上下文之外的指令默认放在主配置文件中(类似继承主配置文件)。 events
和 http
放置在主配置文件中,server
放置在http
块指令中,location
放置在server
块指令中。
配置文件的注释以 #
开始。
三、配置文件如何配置
1、静态内容
http { server { listen 8080; # 改server块监听的端口号,不设置默认是80 root /data/upl; # 当location块中没有设置root时,会使用此root指令 location / { # 这里的 / 部分代表URI,是对请求的匹配,如要写正则,前面加个~ root /data/www; } location /images/ { root /data; } } }
1)如果 URI
匹配多个 location
块,Nginx 采用最长前缀匹配原则(类似计算机网络里面的IP匹配)
2)改配置的意思可以理解为对于 http://localhost/images/example.png
请求,nginx 将响应 /data/images/example.png
文件。 如果不存在,nginx 将返回404。URI
不以 /images/
开头的请求将映射到 /data/www
目录。 例如,对于 http://localhost/some/example.html
请求,nginx 将响应 /data/www/some/example.html
文件。
2、代理服务器
Nginx 的一个常见应用是将其设置为代理服务器(Proxy Server),即接受客户端的请求并将其转发给代理服务器,再接受代理服务器发来的响应,将它们发送到客户端。
比如我们可以用一个 Nginx 实例实现对图片文件的请求使用本地文件系统,而其他请求转发到代理服务器。
首先,修改 Nginx 的配置文件中的http块如下:
http { server { listen 8080; root /data/upl; location / { proxy_pass http://localhost:8080/; } location ~ \.(gif|jpg|png)$ { root /data/images; } } }
此服务器将过滤以.gif,.jpg或.png结尾的请求,并将它们映射到 /data/images
目录(通过向 root
指令的参数添加请求的URI),并将所有其他请求发送给上面配置的代理服务器。这样,图片和其他请求就可以使用不同的服务器来处理。