最近对Nginx做了一些初步研究,Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发。主要根据工作中各类应用服务部署访问的需求,围绕HTTP服务、负载均衡、正反向代理、子路由、静态资源发布访问等,以及结合minio管理的图片文件资源预览,如何快速搭建web服务的一些研究和探索,也包括一些基本指令解释和正则表达式等,主要编写了几个应用示例,其实Nginx应用范围非常广泛,功能都比较实用,任何一个功能都可以单独展开介绍,比如关于性能优化的gzip功能,本文只是总结常见的应用场合,同时,Nginx支持master-worker和单进程模式,这里主要介绍单进程模式,供大家参考。
一、nginx启动
start nginx或 nginx.exe
重新载入nginx:nginx.exe -s reload
查看版本:nginx -v
二、nginx停止
nginx.exe -s stop 或 nginx.exe -s quit
三、nginx配置文件整体结构
... #全局块
events { #events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
四、nginx配置说明
1.指令说明
server : 用于定义服务,http中可以有多个server块
listen : 指定服务器侦听请求的IP地址和端口,如果省略地址,服务器将侦听所有地址,如果省略端口,则使用标准端口80
server_name : 服务名称,用于配置域名
location : 用于配置映射路径uri对应的配置,一个server中可以有多个location, location后面跟一个uri,可以是一个正则表达式, / 表示匹配任意路径, 当客户端访问的路径满足这个uri时就会执行location块里面的代码
root : 根路径,当访问http://localhost/test.html,“/test.html”会匹配到"/"uri, 找到root为/usr/local/var/www/html,用户访问的资源物理地址=root + uri = /usr/local/var/www/html + /test.html=/usr/local/var/www/html/test.html
index : 设置首页,当只访问server_name时后面不跟任何路径是不走root直接走index指令的;如果访问路径中没有指定具体的文件,则返回index设置的资源,如果访问http://localhost/html/ 则默认返回index.html;如果指定了路径,就直接从root中找对应该uri指定的文件。
set指令:语法 为set 变量名 变量值 ; 引用使用:$变量名,详见下面的示例2。
2.uri正则表达式
1) . : 匹配除换行符以外的任意字符
2)? : 重复0次或1次
3)+: 重复1次或更多次
4)*: 重复0次或更多次
5) \d :匹配数字
6) ^ : 匹配字符串的开始
7)$ : 匹配字符串的结束
8){n} : 重复n次
9){n,} : 重复n次或更多次
10) [ ] : 匹配单个字符c
11) [a-z] : 匹配a-z小写字母的任意一个
12) (a|b|c) : 属线表示匹配任意一种情况,每种情况使用竖线分隔,一般使用小括号括括住,匹配符合a字符 或是b字符 或是c字符的字符串
13) \ 反斜杠:用于转义特殊字符
其中,小括号()之间匹配的内容,可以在后面通过$1来引用,$2表示的是前面第二个()里的内容。正则里面容易让人困惑的是\转义特殊字符。