为公司建立网站,做的网站为什么图片看不了怎么办,上海广告公司招聘信息,电商网站设计思路目录 常用的Nginx 正则表达式
location和rewrite的区别
location
location 大致可以分为三类
location 常用的匹配规则
location 优先级
location 示例说明
location优先级的总结
rewrite
rewrite的功能
rewrite实现跳转的条件
rewrite的执行顺序
rewrite的语法格式…目录 常用的Nginx 正则表达式
location和rewrite的区别
location
location 大致可以分为三类
location 常用的匹配规则
location 优先级
location 示例说明
location优先级的总结
rewrite
rewrite的功能
rewrite实现跳转的条件
rewrite的执行顺序
rewrite的语法格式
rewrite的示例
一
二
三
四
五 常用的Nginx 正则表达式
^ 匹配输入字符串的起始位置$ 匹配输入字符串的结束位置* 匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll” 匹配前面的字符一次或多次。如“ol”能匹配“ol”及“oll”、“olll”但不能匹配“o”? 匹配前面的字符零次或一次例如“do(es)?”能匹配“do”或者“does””?”等效于”{0,1}”. 匹配除“\n”之外的任何单个字符若要匹配包括“\n”在内的任意字符请使用诸如“[.\n]”之类的模式\ 将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如“\n”匹配一个换行符而“\$”则匹配“$”\d 匹配纯数字[0-9] \s 空白符 \w 任意单词字符包括下划线[A-Za-z0-9_]{n} 重复 n 次{n,} 重复 n 次或更多次{n,m} 重复 n 到 m 次[] 定义匹配的字符范围[c] 匹配单个字符 c[a-z] 匹配 a-z 小写字母的任意一个[a-zA-Z0-9] 匹配所有大小写字母或数字() 表达式的开始和结束位置 | 或运算符
location和rewrite的区别
从功能看 rewrite 和 location 似乎有点像都能实现跳转主要区别在于 rewrite 是在同一域名内更改获取资源的路径而 location 是对一类路径做控制访问或反向代理还可以proxy_pass 到其他机器。
rewrite 对访问的域名或者域名内的URL路径地址重写重定向请求location 对访问的路径做访问控制或者代理转发
location
location 大致可以分为三类
精准匹配location / {...}一般匹配location / {...} 正则匹配location ~ / {...}
location 常用的匹配规则 进行普通字符精确匹配也就是完全匹配。^~ 表示普通字符匹配。使用前缀匹配。如果匹配成功则不再匹配其它 正则匹配location。~ 区分大小写的匹配。~* 不区分大小写的匹配。!~ 区分大小写的匹配取非。!~* 不区分大小写的匹配取非。
location 优先级
首先精确匹配 其次前缀匹配 ^~其次是按文件中顺序的正则匹配 ~或~*然后匹配不带任何修饰符的一般前缀匹配最后是交给 / 通用匹配
location 示例说明
1location / {} 为精确匹配 / 主机名后面不能带任何字符串比如访问 / 和 /data则 / 匹配/data 不匹配 再比如 location /abc则只匹配/abc /abc/或 /abcd不匹配。若 location /abc则即匹配/abc 、/abcd/ 同时也匹配 /abc/。
2location / {} 因为所有的地址都以 / 开头所以这条规则将匹配到所有请求 比如访问 / 和 /data, 则 / 匹配 /data 也匹配 但后面前缀路径会和最长字符串优先匹配最长匹配
3location /documents/ {} 匹配任何以 /documents/ 开头的地址匹配符合以后还要继续往下搜索其它 location 只有其它 location后面的前缀路径没有匹配到时才会采用这一条
4location /documents/abc {} 匹配任何以 /documents/abc 开头的地址匹配符合以后还要继续往下搜索其它 location 只有其它 location后面的前缀路径没有匹配到时才会采用这一条
5location ^~ /images/ {} 匹配任何以 /images/ 开头的地址匹配符合以后停止往下搜索正则采用这一条
6location ~* \.(gif|jpg|jpeg)$ {} 匹配所有以 gif、jpg或jpeg 结尾的请求 然而所有请求 /images/ 下的图片会被 location ^~ /images/ 处理因为 ^~ 的优先级更高所以到达不了这一条正则
7location /images/abc {} 最长字符匹配到 /images/abc优先级最低继续往下搜索其它 location会发现 ^~ 和 ~ 存在
8location ~ /images/abc {} 匹配以/images/abc 开头的优先级次之只有去掉 location ^~ /images/ 才会采用这一条
9location /images/abc/1.html {} 匹配/images/abc/1.html 文件如果和正则location ~ /images/abc/1.html 相比正则优先级更高
location优先级的总结
(location 完整路径) (location ^~ 路径) (location ~,~* 正则顺序) (location 部分前缀路径) (location /)
在没有精准匹配的情况下先看前缀匹配的长度然后根据最长的前缀匹配的优先级去确定是否再去看其它正则匹配location如果最长的前缀匹配带有 ^~ 则不再看其它正则匹配location如果最长的前缀匹配是没有修饰符的一般匹配则会再看其它正则匹配location前缀匹配看长度最长的优先匹配正则匹配看上下顺序由上往下依次匹配当有匹配成功时候停止匹配按当前匹配规则处理请求 只有在精准、前缀、正则、一般 都没有匹配到的时候才会看通用匹配
rewrite
rewrite的功能
rewrite功能就是使用nginx提供的全局变量或自己设置的变量结合正则表达式和标记位实现URL重写以及重定向。 比如更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。
rewrite只能放在server{},location{},if{}中并且默认只能对域名后边的除去传递的参数外的字符串起作用 例如 http://www.kgc.com/abc/bbs/index.php?a1b2 只对/abc/bbs/index.php重写。
rewrite实现跳转的条件
Nginx通过ngx_http_rewrite_module 模块支持URL重写、支持if条件判断但不支持else 跳转从一个 location跳转到另一个location循环最多可以执行10次超过后nginx将返回500错误 PCRE支持perl兼容正则表达式的语法规则匹配 重写模块 set 指令创建新的变量并设其值
rewrite的执行顺序
(1) 执行 server 块里面的 rewrite 指令。 (2) 执行 location 匹配。 (3) 执行选定的 location 中的 rewrite 指令。
rewrite的语法格式
rewrite regex replacement [flag];
regex 表示正则匹配规则。
replacement 表示跳转后的内容。
flag 表示 rewrite 支持的 flag 标记。###flag标记说明###
last 本条规则匹配完成后不终止重写后的url匹配一般用在 server 和 if 中。
break 本条规则匹配完成即终止终止重写后的url匹配一般使用在 location 中。
redirect 返回302临时重定向浏览器地址会显示跳转后的URL地址。
permanent 返回301永久重定向浏览器地址栏会显示跳转后的URL地址。rewrite的示例
一
基于域名的跳转需要浏览器访问www.www.com时自动跳转到www.wwy.com 进入到nginx的配置文件中添加修改以下内容 检测语法没错重启nginx 去到浏览器进行测试
输入 跳转 二
基于客户端 IP 访问跳转要求只有192.168.75.20主机能正常访问网页其他所有主机访问都会自动跳转到维护页面 进入到nginx的配置文件中添加修改以下内容 检测语法没错重启nginx 去到浏览器清楚完缓存搜索 三
基于旧域名跳转到新域名后面加目录现在访问的是 http://www.www.com/post/,现在需要将这个域名下面的访问都跳转到http://www.wwy.com/bbs/post/ 进入到nginx的配置文件中添加修改以下内容 检测语法没错重启nginx 去到浏览器搜索http://www.www.com/post/123.html 跳转 四
基于参数匹配的跳转现在访问http://www.wwy.com/99跳转到http://www.wwy.com页面 进入到nginx的配置文件中添加修改以下内容 检测语法没错重启nginx
去到浏览器搜索 跳转 五
将对http://www.wwy.com网站的所有请求跳转到自定义的维护页面 进入到nginx的配置文件中添加修改以下内容 检测语法没错重启nginx 去到浏览器搜索