码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx 笔记与总结(7)Location:正则匹配

时间:2015-08-05 00:46:46      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:

在 /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:正则匹配

标签:

原文地址:http://www.cnblogs.com/dee0912/p/4703419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!