客户端发起的总的请求数是requests,服务端可以不接受请求,也即实际接受的请求数是accepts,而服务器在接受的请求数中实际处理的请求数是handled
reading 正在读取的客户端请求数量
writing 正在发送响应报文的连接数量
waiting 等待发送请求的空闲连接数量
对于长连接,还需要等待用户发送数据等等的情况,因此会出现空闲连接。
6.URL重写
Nginx的配置文件支持类似shell编程的逻辑判断,对于不同的请求定义不同的规则。
URI/URN/URL的区别
URI 统一资源标识符,URI由URN和URL组成,mailto:John.Doe@example.com
URN 统一资源名称,代表资源的名称,John.Doe
URL 统一资源定位符,代表资源的路径,mailto:example.com
if判断指令
if (condition) {...},仅仅在server和location块中使用
condition是一个变量的时候,为空或者以0开头的字符串都将被判定为false
逻辑判断表达式:
=或!= 等于或不等于
正则表达式匹配:
~ 区分大小写的匹配
~* 不区分大小写的匹配
!~ 区分大小写的不匹配
!~* 不区分大小写的不匹配
文件/目录匹配:
-f/!-f 文件是否存在
-d/!-d 目录是否存在
-e/!-e 文件或者目录是否存在
-x/!-x 文件是否可以执行
Nginx内置的全局变量
$host 请求主机头字段,即server_name
$http_user_agent 客户端agent信息,即客户端使用的何种浏览器,这个值一定要根据日志access.log中显示的浏览器信息为依据,尤其是IE浏览器,之前我就以MSIE为IE的http_user_agent,结果实验老是失败。
$http_cookie 会话标识
$limit_rate 限制连接速率,例如网盘的限速
$request_meathod 客户端请求的动作
$remote_addr 客户端的IP地址
$request_filename 当前请求的文件路径
$scheme http方法(http或者https)
$server_protocol http协议版本
$server_addr 服务器IP地址
$server_name 服务器名称
$server_port 服务器的端口号
$request_uri 包含参数的URI,例如?xxx
rewrite指令
只能用在server、location、if中,并且只能对URL中的非传递参数的字符串起作用。