欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Nginx Location和Rewrite精心研究浅析

来源:本站整理 作者:佚名 时间:2017-09-12 TAG: 我要投稿

Nginx Location

Nginx由内核和模块构成,此中内核的计划异常微小和简练,完成的事情也异常简略,仅仅经由过程查找设置装备摆设文件将客户端的哀求映射到一个location block,而location是Nginx设置装备摆设中的一个指令,用于拜访的URL婚配,而在这个location中所设置装备摆设的每一个指令将会启动分歧的模块去完成响应的事情。
 location功效是由ngx_http_index_module模块供给的。
 location常放在server上下文。
 location婚配与location的搁置次序无关,而是与location婚配规矩的优先级无关。
罕见的location婚配的URL方法以下:

标志 说明
= 字面准确婚配,准确到文件
^~ URL的前缀婚配,不支撑正则
~ 正则婚配反省,辨别大小写
~* 正则婚配反省,不辨别大小写
/ 不带任何前缀
location婚配优先级以下:

(location =) > (location 完备门路)> (location ^~) > (location ~) > (location ~*) > ( location部门肇端门路) > (location / )

Nginx Location规矩案例:

只会婚配/,优先级比location / 低,= file 婚配到file的优先级最高。

location =/ {
 [ configuration L1  ]
 }
间接婚配到到file,优先级最高。

location =/index.html {
 [ configuration L2  ]
 }
能够婚配任何哀求,然则因为从 / 开端婚配,一切优先级最低。

location / {
 [ configuration L3  ]
 }
婚配任何故/images/开端的哀求,而且结束婚配其余的loation;

location = /images/ {
  [ configuration L4 ]
 }
婚配以html、txt、gif、jpg、jpeg开头的URL文件哀求, 然则一切/images/目次的哀求将由 [Configuration L4]处置。

location ~* \.(html|txt|gif|jpg|jpeg)$ {
  [ configuration L5]
  }
浏览器提议HTTP Request URI案例与Location规矩案例婚配以下:

 / -> 婚配configuration L3;
 /index.html 婚配configuration L2;  
 /images/ 婚配configuration L4;
 /images/logo.png 婚配configuration L4;
 /img/test.jpg 婚配configuration L5。
临盆情况中无需在Nginx.conf设置装备摆设文件中同时增加五种规矩婚配,以下为企业临盆情况Nginx Location部门设置装备摆设代码:

#婚配/,优先级最低
location /
{
    root /var/www/html/;
 expires      60d;
}
#婚配静态页面,由当地剖析
location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
{
 root /var/www/html/;  
 expires      60d;     
}
#婚配静态页面,交给后端服务器
location ~ .*\.(jsp|php|cgi|do)$
{
    root /var/www/html/;
    proxy_pass http://linux_web;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_set_header Host  $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   
}
#间接婚配newindex.html,优先级最高
location =/newindex.html
{
    root /var/www/newwww/;
 expires      60d;
}
Nginx Rewrite

Rewirte规矩也称为规矩重写,重要功效是完成浏览器拜访HTTP URL的跳转,其正则表达式是基于Perl说话。平日而言,险些一切的WEB服务器均能够支撑URL重写。
Rewrite URL规矩重写的用处:

对搜索引擎优化(Search Engine Optimization,SEO)友爱,利于搜索引擎抓取网站页面;

暗藏网站URL实在地点,浏览器表现加倍雅观;

网站变革进级,能够基于Rewrite暂时重定向到其余页面。

 Nginx Rewrite是由ngx_http_rewrite_module模块供给;

 Nginx Rewrite能够应用正则调换URL,前往重定向页面。

 Nginx Rewrite是按次序停止婚配的。

 Nginx Rewrite放在server,location,if上下文。

Nginx Rewrite规矩应用中有三个观点必要懂得,分别是:Rewrite开头标识符、Rewrite规矩罕用表达式、Nginx Rewrite变量,以下为三个观点的详解:

Rewrite开头标识符:因为Rewrite规矩末端,表现规矩的履行属性。

last :相当于Apache里的(L)标志,表现完成rewrite婚配,婚配完成后还会向下继承婚配。
break:本条规矩婚配完成后,停止婚配,再也不婚配前面的规矩.
redirect:前往302暂时重定向,
浏览器地点会表现跳转后的URL地点

permanent:前往301永远重定向,
浏览器地点栏会表现跳转后的URL地点

此中last和break用来完成URL重写时,浏览器地点栏URL地点稳定。

Rewrite规矩罕用表达式:要用于婚配参数、字符串及过滤设置。

标志 意义
. 婚配任何单个字符
[word] 婚配字符串word
[^word] 不婚配字符串word
aa|bb 可选择字符串aa|bb
? 婚配0到1个字符
* 婚配0到多个字符
+ 婚配1到多个字符
^ 字符串开端标志
$ 字符串开头标志
\n 本义字符
Rewrite变量:罕用于婚配HTTP哀求头信息、浏览器主机名、URL等。

HTTP headers:HTTP_USER_AGENT, HTTP_REFERER, HTTP_COOKIE, HTTP_HOST, HTTP_ACCEPT;
connection & request: REMOTE_ADDR, QUERY_STRING;

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载