Nignx location匹配及重定向

  • location
    • 分类
    • 匹配规则
    • 优先级
    • 示例
    • 实际运用匹配规则
      • 直接匹配网站根
      • 处理静态文件请求
      • 通用规则
  • rewrite
    • 跳转原理
    • rewrite 语法
    • fiag标记
    • 示例
      • 域名跳转
      • 本机可访问,其他访问到别的界面

location

分类

精准匹配:location = / {}
一般匹配:location / {}
正则匹配:location ~ / {}

匹配规则

= :进行普通字符精确匹配,也就是完全匹配
^~ :表示普通字符匹配,使用前缀匹配 匹配即停止
~ :区分大小写的匹配
~* :不区分大小写的匹配
!~ :区分大小写的匹配取反
!~* :不区分大小写的匹配取反

优先级

  1. 精确匹配 =
  2. 前缀匹配 ^~
  3. 按文件中顺序的正则匹配 ~或 ~*
  4. 匹配不带任何修饰的一般匹配
  5. 通用匹配

示例

location = / {}
=为精确匹配 / ,主机名后面不能带任何字符串,比如访问 / 和 /data,则 / 匹配,/data 不匹配
再比如 location = /abc,则只匹配/abc ,/abc/或 /abcd不匹配location / {}
因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
比如访问 / 和 /data, 则 / 匹配, /data 也匹配,
但若后面是正则表达式会和最长字符串优先匹配(最长匹配)location /documents/ {}
匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索其它 locationlocation /documents/abc {}
匹配任何以 /documents/abc 开头的地址,匹配符合以后,还要继续往下搜索其它 locationlocation ^~ /images/ {}
匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下匹配location ~* \.(gif|jpg|jpeg)$ {}
匹配所有以 gif、jpg或jpeg 结尾的请求location /images/abc/1.html {}
匹配/images/abc/1.html 文件,如果和正则 ~ /images/abc/1.html 相比,正则优先级更高优先级总结:
(location =) > (location 完整路径) > (location ^~ 路径) >
(location ~,~* 正则顺序) > (location 部分起始路径) > (location /)

实际运用匹配规则

直接匹配网站根

location = / {proxy_pass http://tomcat_server/;
}
通过域名访问网站首页比较频繁,使用这个会加速处理
这里直接转发给后端应用服务器

处理静态文件请求

目录匹配
location ^~ /static/ {root /webroot/static/;
}文件后缀匹配
location ~* \.(html|gif|jpg|jpeg|png|css|js|ico)$ {root /webroot/res/;
}

通用规则

转发带.php、.jsp后缀的动态请求到后端应用服务器
非静态文件请求就默认是动态请求location / {proxy_pass http://tomcat_server;
}

rewrite

rewrite功能就是使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记实现URL重写以及重定向。

运用环境

  • 更换域名后需要保持旧的域名能够转到新的域名上
  • 某网页发生改变需要跳转到新的页面
  • 网站防盗链

跳转原理

  • 通过ngx_http_rewrite_module模块支持URL重写、支持if条件判断,不支持else
  • 从一个location跳转到另一个location,循环最多可以执行10次,超过后nginx将返回500错误
  • perl兼容正则表达式的语法规则匹配
  • 重写模块set指令:创建新的变量并为其赋值

rewrite 语法

rewrite <regex> <replacement> <flag>;

regex:表示正则匹配规则
replacement:表示跳转后的内容
flag:表示rewrite支持的flag标记

fiag标记

last :本条规则匹配完成后,继续向下匹配新的location URI规则,一般用在 server 和 if 中
break :本条规则匹配完成即终止,不再匹配后面的任何规则,一般使用在 location 中
redirect :返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent :返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

示例

域名跳转

要求访问 www.hbh.com 时,跳转到www.xhl.com上


本机可访问,其他访问到别的界面




Nignx location匹配及重定向相关推荐

  1. nginx之location匹配规则

    Nginx之location 匹配规则详解 有些童鞋的误区 1. location 的匹配顺序是"先匹配正则,再匹配普通". 矫正: location 的匹配顺序其实是" ...

  2. Nginx之location 匹配规则详解

    Nginx 的语法形式是: location [=|~|~*|^~|@] /uri/ { - } ,意思是可以以" = "或" ~* "或" ~ &q ...

  3. nginx location 匹配 多个规则_你需要知道的Nginx配置二三事

    Nginx是俄罗斯人Igor Sysoev基于C语言编写的十分轻量级的HTTP服务器,它主要有以下特点: 它是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器 ...

  4. nginx location 匹配 多个规则_nginx配置location与rewrite规则教程

    nginx配置location与rewrite规则教程 location 教程 示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ...

  5. Nginx正则表达式与location匹配简介

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.nginx rewrite概述 1.概述 2. 跳转场景​ 3. 跳转实现 4. rewrite实际场景 二.nginx ...

  6. Nginx之正则表达式、location匹配简介以及rewrite重写

    目录 一.Nginx 正则表达式 二.location 匹配简介 1.匹配规则格式 ①.精准匹配 ②.一般匹配 ③.正则匹配 2.常用的匹配规则 3.匹配的优先级 4.示例 5.实际网站使用中,至少有 ...

  7. web服务之Nginx中的location匹配与rewrite重写跳转

    文章目录 常见的Nginx正则表达式 location location分为三类 location常用的匹配规则 location 优先级 location 示例说明 三个匹配规则定义 rewrite ...

  8. Nginx的location匹配与rewrite重写跳转

    目录 Nginx的location匹配与rewrite重写跳转 一.常用的Nginx正则表达式 二.location 分类 location常用的匹配规则 优先级 location示例说明 Rewri ...

  9. 必学必会的nginx配置location匹配顺序总结

    location 匹配规则: location 路径正则匹配: 符号 说明 ~ 正则匹配,区分大小写 ~* 正则匹配,不区分大小写 ^~ 普通字符匹配,如果该选项匹配,则,只匹配该选项,不再向下匹配其 ...

最新文章

  1. 【解决】Error:java: javacTask: source release 8 requires target release 1.8
  2. Java连接open fire_java – 为什么我不能连接到openfire服务器?
  3. go slice切片详解:定义、遍历、追加切片、切片拷贝
  4. git-ssh-keygen
  5. 分享一批国内常用的tracker地址
  6. android7.0提示定位,解决android7.0上某些PopuWindow显示位置不正确的问题
  7. java 合并流(SequenceInputStream)
  8. Delphi 中的字符串函数(6) - StrUtils 中的 Ansi 字符串函数
  9. 服务器2003系统黑屏怎么办,windows-server-2003 – Windows Server 2003 – 黑屏,光标在启动时...
  10. mysqld --initialize --console 没有 打印信息_JavaScript设计模式--装饰者模式
  11. GMaps.js - 轻松集成Google Maps的jQuery插件
  12. FPGA实现VGA显示(四)——————读取ROM显示彩色图片(a)
  13. 二维数组初始化_0基础学习C语言第七章:数组(2)
  14. 删除windows目录下的$NTUnintall$文件夹DOS命令
  15. centos 安装 LAMP
  16. Git amend 修改上次提交
  17. 在树莓派上做一个远程控制的小车(基于Python)
  18. python 对图片进行颜色转换
  19. python hasattr函数_Python hasattr()函数
  20. DoNet开源项目-基于jQuery EasyUI的后台管理系统

热门文章

  1. html左边移动属性,css左边偏移属性left、右边偏移属性right
  2. 限制在线网络游戏时间
  3. 半监督学习——LabelSpreading
  4. Win10正式专业版系统的激活
  5. 规则引擎Drools使用 第四篇Drools基础语法
  6. 英文版-直到世界尽头-To the Ends of the Earth
  7. 开源跨平台数据恢复testdisk源码分析
  8. 考研——现场确认,照片,时间,材料
  9. html用unicode编码转换汉字,汉字与Unicode编码相互转换(Js版)
  10. 安卓手机可以连接斑马系统吗_想做汽车领域安卓的斑马,在2017年都做了什么? - GeekCar...