在 /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. 【读书笔记】读《JavaScript设计模式》之桥接模式

    桥接模式(Bridge)将抽象部分与它的实现部分分离,使它们都可以独立地变化. 一.使用场景 使用场景一:事件监控 对于前端而言,最典型的使用场景——事件监控.如—— addEvent(element ...

  2. 关于struts 2中的日期问题

    struts 2中引入了大量的jquery的内容 其中日期问题总结一下: 步骤: 1.当然不用说,先建一个web项目 2.导入struts2所需要的jar包,以及此插件的包(当然你也可以用:strut ...

  3. tty相关内容

    参考文章: http://blog.csdn.net/goodluckwhh/article/details/13368279

  4. JNDI 是什么

    转自:http://blog.csdn.net/zhaosg198312/article/details/3979435 JNDI是 Java 命名与目录接口(Java Naming and Dire ...

  5. android获取string.xml的值(转)

    为什么需要把应用中出现的文字单独存放在string.xml文件中呢? 一:是为了国际化,当需要国际化时,只需要再提供一个string.xml文件,把里面的汉子信息都修改为对应的语言(如,English ...

  6. POJ 1523 SPF tarjan求割点

                                                                   SPF Time Limit: 1000MS   Memory Limit ...

  7. MATLAB学习笔记(四)——文件操作

    首先,声明,如果学过C的话就可以不用看了,因为是一样的,只要注意一些系统变量的名字稍微变动了而已.都是基于ANSI C语言的标准库函数写的. (一)文件的打开与关闭 一.文件的打开 1.语法 fid= ...

  8. SqlServer2000数据库字典--表结构.sql

    SELECT TOP 100 PERCENT --a.id,       CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名,       C ...

  9. 利用SQL语句查询一个数据库中的所有表

    SQL  :  select * from information_schema.tables ORACLE: select table_name from user_tables ACCESS: s ...

  10. IEEE754测试-软件

    为满足硬件开发的同事验证从传感器采集到的数据是否正确,也为了方便我自己, 随手做了这个小东西,主要涉及浮点数的存储问题!