Nginx 介绍
Nginx(发音同engine x)是一款免费的开源软件,由俄罗斯人伊戈尔·赛索耶夫2004年首次公开发布。
Nginx是一款面向性能设计、异步框架的Web服务器,支持反向代理,负载均衡和HTTP缓存。
Nginx使用异步事件驱动的方法来处理请求。Nginx的模块化事件驱动架构可以在高负载下提供更可预测的性能。
在Linux操作系统下,Nginx使用epoll事件模型,得益于此,Nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于epoll的高效事件模型kqueue。
Nginx在官方测试的结果中,能够支持五万个并行连接,而在实际的运作中,可以支持二万至四万个并行链接。
Nginx 常用命令
启动服务
$ [sudo] /usr/sbin/nginx -c /etc/nginx/nginx.conf
管理运行实例
$ [sudo] nginx -s signal
stop – 快速关闭
quit – 优雅关闭 (等待 worker 线程完成处理)
reload – 重载配置文件
reopen – 重新打开日志文件
重启服务
$ [sudo] service nginx restart
停止服务
$ [sudo] service nginx restart
停止nginx服务其实就是给nginx主进程发送信号,所以需要先找到nginx主进程pid。
有两种方法可以找到nginx pid:
通过
ps
命令$ ps -ef | grep -w nginx | grep master | awk '{print $2}'
通过
nginx.pid
文件nginx.pid
文件路径配置在nginx.conf
里面的pid
项里面(笔者Ubuntu环境为/run/nginx.pid
)。
强制停止
$ [sudo] pkill -9 nginx
或$ cat /run/nginx.pid | xargs [sudo] kill -9
快速停止
$ cat /run/nginx.pid | xargs [sudo] kill -TERM
$ cat /run/nginx.pid | xargs [sudo] kill -INT
从容停止
$ cat /run/nginx.pid | xargs [sudo] kill -QUIT
重新加载配置
$ [sudo] /usr/sbin/nginx -s reload
或者$ cat /run/nginx.pid | xargs [sudo] kill -HUP
检查配置
$ [sudo] /usr/sbin/nginx -t -c /etc/nginx/nginx.conf
Ubuntu 升级nginx
1 | sudo apt-add-repository ppa:nginx/stable |
Nginx 配置
if语句
Nginx配置文件语法不支持if
语句嵌套,也不支持and、or、&&、|| 这类语法。
对if
语句感兴趣的可查看location下if是如何工作的这篇文章。
location 匹配
location匹配规则及优先级(由高到低)如下:
=
严格匹配这个查询。如果找到,停止搜索。^~
匹配路径的前缀,如果找到,停止搜索。~
为区分大小写的正则匹配。~*
为不区分大小写匹配 。
rewrite模块
rewrite的指令可以实现url的转向,rewrtie有四种不同的flag,分别是redirect、permanent、break和last。其中前两种是跳转型的flag,后两种是代理型。跳转型是指有客户端浏览器重新对新地址进行请求,代理型是在WEB服务器内部实现跳转的。
redirect
302跳转到rewrtie后面的地址。permanent
301永久调整到rewrtie后面的地址,即当前地址已经永久迁移到新地址,一般是为了对搜索引擎友好。last
将rewrite后的地址重新在server标签执行。break
将rewrite后的地址重新在当前的location标签执行。
参考资料:
Nginx安装
Nginx 教程 (1):基本概念
Nginx 教程(2):性能
nginx 配置 Rewrite, 并使URL不跳转
If Is Evil