您的位置:首页 > 运维架构 > Nginx

nginx配置学习备忘0

2015-10-11 20:12 585 查看
我nginx用来做反向代理。

location

refer: nginx location匹配规则nginx rewrite 指令

location匹配命令

~ #波浪线表示执行一个正则匹配,区分大小写

~* #表示执行一个正则匹配,不区分大小写

^~ #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录

= #进行普通字符精确匹配

@ #”@” 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files

location 匹配的优先级(与location在配置文件中的顺序无关)

= 精确匹配会第一个被处理。如果发现精确匹配,nginx停止搜索其他匹配。

普通字符匹配,正则表达式规则和长的块规则将被优先和查询匹配,也就是说如果该项匹配还需去看有没有正则表达式匹配和更长的匹配。

^~ 则只匹配该规则,nginx停止搜索其他匹配,否则nginx会继续处理其他location指令。

最后匹配理带有”~”和”~*”的指令,如果找到相应的匹配,则nginx停止搜索其他匹配;当没有正则表达式或者没有正则表达式被匹配的情况下,那么匹配程度最高的逐字匹配指令会被使用。

例如:

#对 "/" 启用反向代理
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.py/$1 last;
}
}


上面代码是匹配任何请求,因为所有请求都是以”/”开始。

if指令

语法:if(condition){…}

默认值:无

作用域:server,location

对给定的条件condition进行判断。如果为真,大括号内的rewrite指令将被执行。

if条件(conditon)可以是如下任何内容:

一个变量名;false如果这个变量是空字符串或者以0开始的字符串;

使用= ,!= 比较的一个变量和字符串

是用~, ~*与正则表达式匹配的变量,如果这个正则表达式中包含},;则整个表达式需要用” 或’ 包围

使用-f ,!-f 检查一个文件是否存在

使用-d, !-d 检查一个目录是否存在

使用-e ,!-e 检查一个文件、目录、符号链接是否存在

使用-x , !-x 检查一个文件是否可执行

rewrite中的$1,$2表示前面正则表达式匹配后的组,即正则表达式中以括号()包起来的部分。

rewrite

refer: Nginx——基本语法简介(初级篇)

rewrite表达式中可以用作判断的全局变量,示例如下:

例:http://localhost:88/test1/test2/test.php

$host:localhost

$server_port:88

$request_uri:http://localhost:88/test1/test2/test.php

$document_uri:/test1/test2/test.php

$document_root:D:\nginx/html

$request_filename:D:\nginx/html/test1/test2/test.php

rewrite语法中几个常用的句型:

last - 基本上都用这个Flag。

break - 中止Rewirte,不在继续匹配

redirect - 返回临时重定向的HTTP状态302

permanent - 返回永久重定向的HTTP状态301

(总结)Nginx配置文件nginx.conf中文详解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: