<!-- wp:quote -->

<p>location之正则匹配</p>
<!-- /wp:quote --> <!-- wp:more --> <!-- /wp:more --> <!-- wp:tadv/classic-paragraph --> <p>第六节说了用location的精准匹配来匹配,那么现在要是用正则匹配参与进来呢。</p> <p>我们现在把刚才的两段都注释掉吧</p> <p></p> <!-- /wp:tadv/classic-paragraph --> <!-- wp:paragraph --> <p>在默认的location配置后面添加下面的内容</p> <!-- /wp:paragraph --> <!-- wp:tadv/classic-paragraph -->
        location ~ image {
            root /var/www/image;
            index index.html index.htm;
        }

<p>然后保存配置去/var/www/image目录,如果没有就请创建一个,然后随便从网站上下载一张图片到这个目录下,再之后我们最好改一下你的图片的名字:</p>
<p></p>
<p>然后在你的nginxHTML目录下面的index文件中添加下面的这样一段话:</p>

<img src="./image/logo.png"/>
<p>填写在body里面,不要乱放位置,这就是说要加载一下我们这个image目录下面的这个logo.png</p> <p></p> <p>我们现在先把配置文件里面刚才添加的那一段配置文件,先不让他生效,这样按理来说会加载这个logo:
</p> <!-- /wp:tadv/classic-paragraph --> <!-- wp:paragraph --> <p>当我们打开浏览器看看:</p> <!-- /wp:paragraph --> <!-- wp:tadv/classic-paragraph --> <p></p> <p>发现它并没有显示,我们把这个图片的地址打开发现它是404,也就是说文件找不到,</p> <p></p> <p>没有这个文件在,那是自然的,因为我们没有做正则的时候它会使用默认配置,而/image/logo.png就是要/usr/local/nginx/html里面有一个image的logo在才行,我们这里没有我们的是在/var/www/html当然了,你也可以把var下面的这个logo复制过来同时在html目录下创建一个image目录也可以</p> <p>然后再次刷新刚才的404页面</p> <p></p> <!-- /wp:tadv/classic-paragraph --> <!-- wp:paragraph --> <p>这就正常加载图片了.</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>这个能加载很正常,很好理解,但是我们现在把这个段正则取消注释,默认的和正则都参与进来,我们看看谁发挥作用.</p> <!-- /wp:paragraph --> <!-- wp:tadv/classic-paragraph -->
        location / {
            root   html;
            index  index.html index.htm;
        }
        location ~ image {
            root /var/www/image;
            index index.html index.htm; 
        }

<p>这样我们访问网站的时候,"/"跟"/image/logo.png"匹配,同时,"image"正则与"image/logo.png"也匹配,那么该走哪个呢???</p>
<p>正则表达式的成果将会使用,我们可以看看效果</p>
<!-- /wp:tadv/classic-paragraph -->

<!-- wp:tadv/classic-paragraph -->
<p></p>
<p>但是发现还是错误404,通过查看错误日志知道了,我们的正则表达式起作用了,只不过它访问了</p>
<p></p>
<p>/var/www/image/image/logo.png两节image.</p>
<!-- /wp:tadv/classic-paragraph -->

<!-- wp:tadv/classic-paragraph -->
<p>那这就很好办了,我们只需要把配置文件改为:</p>

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

<!-- /wp:tadv/classic-paragraph -->

<!-- wp:paragraph -->
<p>就可以了,然后重启nginx,刷新页面看看:</p>
<!-- /wp:paragraph -->

<!-- wp:tadv/classic-paragraph -->
<p></p>
<p>这样就搞定了.</p>
<p>如果对于下面的例子:</p>

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

<p>访问http://22132.com/foor<;/p>
<p>对于url "/foor",两个location的patt都能匹配他们,</p>
<p>即"/"能从左前缀匹配,</p>
<p>"/foor"也能左前缀匹配,</p>
<p>此时真正访问的时/var/www/</p>
<p>原因:这个"/foor"匹配的长</p>
<p></p>
<!-- /wp:tadv/classic-paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

最后修改:2020 年 02 月 28 日 06 : 51 PM
请俺喝杯咖啡呗