nginx处理php流程
1客户端和nginx交互
2nginx判断路由url
3转发请求给php-fpm
4php-fpm 和解析器交互并解析代码,最后返回结果
nginx的配置优化
worker_process 子进程的数量 auto 自动检测 根据CPU的内核数量配置
worker_rlimit_nofile nginx打开数量的配置Linux 默认为1024 一般配置204800
Use epoll 修改nginx的运行模式 主要有select poll epoll 一般都使用epoll
Worker_connections
location命令
1.等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项。
2.^~类型表达式。一旦匹配成功,则不再查找其他匹配项。
3.正则表达式类型(~
~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。
4.常规字符串匹配类型。按前缀匹配。
事例:
server{
listen 80; //监听端口
server_name:www.ceshi.com //监听的域名
root /www/bolg //访问的文件目录
index index.html index.htm //默认查询的文件
location ~ \.php${ //区分大小写 查询以.php的url 路径
return 403;//禁止403访问
}
location = /index.html { //如果url 是index.html 则跳转到百度首页
rewrite ^/ http:www.baidu.com last;
}
error_page 404 =@fallback; //如果url地址不存在 则执行跳转
location @fallback { //
rewrite ^/ http:www.baidu.com last;
}
}
rewrite规则模块解析
事例url:https://www.jianshu.com/writer#/notebooks?name=jack&age=10
$args : name=jack&age=10
$document_uri :writer#/notebooks
$host :www.jianshu.com
$http_cookie : cookie 信息
$scheme : tcp utp https http
$request_method : post get
rewrite指令通过正则表达式的使用来改变URI。可以同时存在一个或者多个指令,按照顺序依次对URL进行配置和处理
参数:regex :用于匹配URI的正则表达式。
replacement:匹配成功后用于替换URI中截取内容的字符串
flag:用来设置rewrite对URI的处理行为
flag :状态 last:重新发起一个请求,给其他location进行匹配
break:跳过当前重写,往下进行匹配
redirect:重定向 临时重定向 302
permanent:永久重定向 301
if指令
If 指令来支持判断,并根据条件判断结果选择不同的nginx配置,该指令可以在server块或location块中配置该指令。
Condition参数:
1. “=” 与 “!=” 比较变量和字符串是否相等
2. 正则匹配,变量与正则之间使用”~”,”~*”,”!~”或”!~*”连接,“~”表示匹配大小写,”~*”不匹配大小写
3.“-f” 与 “!-f”判断文件是否存在
4.“-d” 与 “!-d”判断目录是否存在
5.“-e” 与 “!-e”判断目录或者文件是否存在
6.“-x” 与 “!-x”判断请求的文件是否可执行使用
break 指令
break指令用来中断当前相同作用域中的其他nginx配置,与该指令处于同一作用域的nginx配置中,位于它前面的指令配置生效,位于后面的指令配置无效。
nginx服务器在根据配置处理请求的过程中遇到该指令时,回到上一层作用域继续向下读取配置。使用范围:server块,location块,if块
return 指令
return指令用于完成对请求的处理,直接向客户端返回响应的状态代码。处于该指令后的所有nginx配置都是无效的。该指令可以在server块,location块以及if块中使用。
参数:
Code :为返回给客户端的HTTP状态代码。范围:0-999
Text:为返回给客户端的响应体内容,支持变量的使用
URL:为返回给客户端的URL地址