location语法表示uri方式定位

基础语法有三种:

  • location = pattern{}  精准匹配
  • location  pattern{}  一般匹配
  • location ~ pattern{}       正则匹配

location正则表达式:

  • "~ xxx":匹配访问的请求的URL中必须包含"xxx"
  • "~* xXx":匹配忽略后面"xXx"是否大小写
  • /xxx:匹配访问的请求的URL必须是"xxx"开头
  • ^xxx:匹配访问的请求的URL前缀是"xxx"
  • abc$:匹配访问的请求的URL是以abc结尾
  • .*:任何请求

Nginx语法:

  if(条件为:=~ ~*)

  return:返回指定页面

  break:退出,结束语句

  rewrite:重写地址,转发到其他请求地址,其后必须跟break,否则转发失败(1、可隐藏实际访问地址,虚拟地址在nginx下转发至实际地址,2、请求分流[实例在下面:根据正则分流请求])

  -f:是否为文件

  -d:是否为目录

  -e:是否存在

 

举例:

location ~ test {

# 重写语法:if return (条件 = ~ ~*)

#当访问地址IP为 192.168.1.40时,返回401页面

#场景:小的限制(黑名单、白名单、使用脚本禁用用户等)

if ($remote_addr = 192.168.1.200) {
 return 401;
}

#当访问的浏览器是firefox时(~* firefox:忽略firefox大小写),将请求转发至firefox.html页面
if ($http_user_agent ~* firefox) {
    rewrite ^.*$ /firefox.html;
    break;
}

root bhz.com;
index index.html;
}

 

location /goods {

#goods-(\d{1,5})\.html:URLgoods开头,(\d{1,5})是一个最小1位最大5位的数字(0-99999)

#例如:goods-12345.html,超出5位数字报页面404

#上面的地址重写(转发)到指定地址/goods-ctrl.html(可以指向一个动态URL或服务)
  rewrite "goods-(\d{1,5})\.html" /goods-ctrl.html;
  root bhz.com;
  index index.html;
}

动静分离:

  1. 一个service(虚拟主机服务配置)可以配置多个location
  2. 静态的html、js、image、css等放入指定的静态目录下,当客户端访问nginx能匹配到当前正则表达式的location时,可对文件进行缓存,对网站优化很有用
  3. 当客户端访问动态的请求时,可通过特定的location进行反向代理来访问指定处理请求的服务器(tomcat等)

动态的请求访问web服务器(tomcat等)

静态的请求访问Nginx服务器(在root下放一堆静态文件)

 

posted on 2020-06-07 22:21  来临  阅读(210)  评论(0编辑  收藏  举报