在 /usr/local/nginx/conf/nginx.conf 的默认 server 段中,保留默认的 location 信息(之前测试的 location 配置删除):

        location / {
root html;
index index.html index.htm;
}

 

在 /var/www 下创建 image 目录:

[root@localhost ~]# cd /var/www
[root@localhost www]# mkdir image

使用 wget 或者 ftp 在该目录下下载或者传输一张图片:test.jpg

修改 /usr/local/nginx/html/index.html,加上 <img src="./image/test.jpg">:

[root@localhost nginx]# vim html/index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<img src="./image/test.jpg">
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p> <p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p>
</body>
</html>

平滑重启 nginx。

由于 /usr/local/nginx/html/ 目录下并没有 image 目录,因此访问 192.168.254.100 时,页面上的图片是无法显示的:

  

直接访问图片地址:

此时在 location 配置下添加正则匹配的 location 配置(第 2 段),此时的 location 配置为:

        location / {
root html;
index index.html index.htm;
} location ~ image {
root /var/www/;
index index.html;
}

平滑重启 nginx。

访问 http://192.168.254.100/image/test.jpg,正则匹配和一般匹配都能匹配上该 uri 的时候,优先正则匹配:

/var/www/image 目录下的图片显示了。

直接访问 http://192.168.254.100/image/test.jpg:

匹配过程是:正则匹配中的 image 能够匹配到 uri 中的 /image/test.jpg,则正则匹配发挥作用,真正访问的是 /var/www/images/test.jpg

再测试,当多个普通匹配都能匹配到 uri ,哪个匹配能真正发挥作用(比较第 1 段和第 2 段)?

/usr/local/nginx/conf/nginx.conf:

        location / {
root html;
index index.html index.htm;
} location /foo {
root /var/www;
index index.htm index.html;
} location ~ image {
root /var/www/;
index index.html;
}

此时 /var/www 目录下有 foo 目录,下面有文件 index.htm : i'm /var/www/index.htm

对于 uri "/foo",两个 location 的 patt 都能匹配,即 "/" 和 "/foo" 都能左前缀匹配 "/foo",

访问 http://192.168.254.100/foo:

  

        location /foo {
root /var/www;
index index.htm index.html;
}

发挥了作用,原因是 "/foo" 更长,因此使用 "/foo" 的 location 进行匹配。

    

Nginx 笔记与总结(7)Location:正则匹配的更多相关文章

  1. nginx location 正则匹配

    nginx 统计语句1.根据访问IP统计UV awk '{print $1}' access.log|sort | uniq -c |wc -l2.统计访问URL统计PV awk '{print $7 ...

  2. nignx的location正则匹配

    原文链接:http://nginx.org/en/docs/http/ngx_http_core_module.html Syntax: location [ = | ~ | ~* | ^~ ] ur ...

  3. nginx获取经过层层代理后的客户端真实IP(使用正则匹配)

    今天帮兄弟项目搞了一个获取客户端真实IP的问题,网上这种问题很多,但是对于我们的场景都不太合用,现把我的解决方案share给大家,如有问题,请及时指出. 场景: 在请求到达后端服务之前,会经过层层代理 ...

  4. Nginx 笔记与总结(6)Location:精准匹配

    在 /usr/local/nginx/conf/nginx.conf 的 server 段中,location 表示根据 URI 来进行不同的定位:把网站的不同部分定位到不同的处理方式上,例如遇到 . ...

  5. 07 nginx Location之正则匹配

    一:Location之正则匹配 再来看,正则也来参与. location / { root   /usr/local/nginx/html; index  index.html index.htm; ...

  6. nginx location模块--匹配规则

    Location语法语法:location [=|~|~*|^~] /uri/ { … } = --> 开头表示精确匹配 ^~ --> 开头表示uri以某个常规字符串开头,理解为匹配url ...

  7. nginx之location的匹配规则

    nginx之location的匹配规则 一.语法规则 location [=|~|~*|^~] /uri/ { - } 符号 含义 = 开头表示精确匹配 ^~ 开头表示 uri 以某个常规字符串开头 ...

  8. 前端开发掌握nginx常用功能之server&location匹配规则

    nginx主要是公司运维同学必须掌握的知识,涉及到反向代理.负载均衡等服务器配置.前端开发尤其是纯前端开发来说对nginx接触的并不多,但是在一些情况下,nginx还是需要前端自己来搞:例如我们公司的 ...

  9. nginx多虚拟主机优先级location匹配规则及tryfiles的使用

    nginx多虚拟主机优先级location匹配规则及tryfiles的使用 .相同server_name多个虚拟主机优先级访问 .location匹配优先级 .try_files使用 .nginx的a ...

随机推荐

  1. fork

    #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <fcntl.h> ...

  2. 数字型 、String字符串转换

    Java代码 收藏代码 String str = "1,2,3,4,5,6" public int[] StringtoInt(String str) { int ret[] = ...

  3. xampp 访问出现New XAMPP security concept

    在浏览器输入 http://60.10.140.22/xampp出现以下错误信息: Access forbidden! New XAMPP security concept: Access to th ...

  4. 无需u盘和光盘安装linux

    今天折腾linux引导的时候发现一个不用任何移动介质的linux安装方法,即直接在硬盘中启动安装系统. 1.首先下载一个easyBCD.进入“添加新条目”选项选择“NeoGrub”条目,然后选择“添加 ...

  5. SAE Java相关问题小结

    转自:http://blog.csdn.net/bhq2010/article/details/8580412 Sae中使用的servlet容器是jetty7.4.x 我想在web.xml中配置一个自 ...

  6. 使用AIDL远程调用服务中的方法

    AIDL:android interface define language(接口定义语言) 作用:方便远程调用其他服务中的方法 注意:安卓四大组件都要在清单文件注册 aidl创建图: AIDL的全称 ...

  7. ArcGIS for Android地图控件的5大常见操作

    GIS的开发中,什么时候都少不了地图操作.ArcGIS for Android中,地图组件就是MapView,MapView是基于Android中ViewGroup的一个类(参考),也是ArcGIS ...

  8. Quartz.net misfire实践

      1.问题描述 在使用Quartz.net定时运行作业时,存在一种情况:作业错过了某次执行,当作业恢复的时候应该怎么处理?如:job1在3:50的时候应该执行的,但此刻job1处于暂停状态,而到3: ...

  9. 5分钟上手写ECharts的第一个图表

    网址:http://echarts.baidu.com/doc/start.html 架构特性 http://echarts.baidu.com/doc/feature.html | 架构 提供商业产 ...

  10. MVC ActionResult视图结果

    摘要 MVC框架针对HttpResponse进行抽象与多态,使HttpResponse均可表示为ActionResult.那么,抽象和多态表现在哪里呢? //封装一个Action的结果. public ...