Nginx之路径匹配与参数修改-yellowcong

2018-02-05 10:59:52来源:oschina作者:天佑我儿人点击

分享


资源进行分离,jsp ,html,img的动静分离,对于不同的后缀结尾的数据,匹配到不同的服务器上。同时,路径的匹配还可以用于做url的重写,修改url的请求格式,将/age/name/email修改为 age=?&name=?&email=?的格式



localtion语法匹配模式
语言法
例子
精准匹配
localtion=pattern{}
location = /50x.html( error_page 500 502 503 504 /50x.html;) 一般匹配
localtion pattern
location /goods (/goodsxxx的访问匹配) 正则匹配
localtion ~pattern{}
location ~ .jsp$(以jsp结尾的文件)

备注。pattern表示的是表达式


以xx结尾的
upstream myapp{
server 192.168.100.10:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.100.10:8081 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen80;
server_namelocalhost;
#charset koi8-r;
access_logyellow/yellow.access.logmain;
#任何以jsp结尾的请求 /.jsp$
location ~ /.jsp$ {
#root html;
#index index.html index.htm;
proxy_set_header X-real-ip $remote_addr;
proxy_pass http://myapp;
}
//错误页面信息配置
error_page 500 502 503 504/50x.html;
location = /50x.html {
root html;
}
}

这里写图片描述


语法判断
#虚拟主机配置:
server {
listen 1234;
server_name bhz.com;
location / {
#正则表达式匹配uri方式:在/usr/local/nginx/bhz.com下 建立一个test123.html 然后使用正则匹配
#location ~ test {
## 重写语法:if return (条件 = ~ ~*)
#ip判断,当ip是192.168.1.200 ,返回404
if ($remote_addr = 192.168.1.200) {
return 404;
}
#当user_agent(浏览器)是火狐的,就跳转到火狐页面
# ~* 表示包含 firefox的 ,不区分大小写的匹配
if ($http_user_agent ~* firefox) {
#^.*$ 表示当前的请求地址
rewrite ^.*$ /firefox.html;
# #直接退出,不然就会有两个请求问题,报错4040
break;
}
#默认是的文档节点是 yellowcong.com
root yellowcong.com;
index index.html;
}
#判断商品的路径
location /goods {
#{1,5} 表示1-5位的数字
#商品为goods-121.html
rewrite "goods-(/d{1,5})/.html" /goods-ctrl.html?id=$(1);
#路径
root yellowcong.com;
#页面
index index.html;
}
#配置访问日志
access_log logs/yellowcong.com.access.log main;
} 参数修改

通过修改$args来修该请求的参数。


location /testnnnn{
set $args "foo=1&bar=2";
proxy_pass http://localhost:8080/testnnnn;
}
url重写

对于localtion可以像分组一样,对url进行分组,获取到传递的参数,然后传递到后台


#将/info/22/yellowcong/717350389@11.com 转化为 /info?age=12&name=yellowcon&email=717350389
#[0-9]表示 0-9 范围i 数字 也可以使用/d+
#+ 表示1个或多个
#w+ 表示是字符串
#$ 表示结尾
rewrite ^/info/([0-9]+)//(/w+)//(/w+)$ /info?age=$1&name=$2&email=$3 ;
break;
参考文章

http://www.bubuko.com/infodetail-1810501.htmlhttp://blog.csdn.net/gzh0222/article/details/7845981

微信扫一扫

第七城市微信公众平台