nginx配置详解location_nginxlocation

nginx配置详解location_nginxlocationNginx配置location详解转自:https://blog.csdn.net/u012260238/article/details/102498474?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant

Nginx配置location详解

转自:

https://blog.csdn.net/u012260238/article/details/102498474?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-102498474-blog-119041463.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-102498474-blog-119041463.pc_relevant_default&utm_relevant_index=1

location正则写法

location使用语法:

location [ = | ~ | ~* | ^~ ] uri { }

在这里插入图片描述一个示例:



 

顺序 no优先级:(location =) > (location 完整路径) > (location ^~ 路径) > (location , 正则顺序) > (location 部分起始路径) > (/)*

上面的匹配结果按照上面的location写法,以下的匹配示例成立:


nginx配置详解location_nginxlocation

实际使用建议

所以实际使用中,个人觉得至少有三个匹配规则定义,如下:

直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,官网如是说。

这里是直接转发给后端应用服务器了,也可以是一个静态首页

  • 第一个必选规则

 

  • 第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项

有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用


  • 第三个规则就是通用规则,用来转发动态请求到后端应用服务器

#非静态文件请求就默认是动态请求,自己根据实际把握

#毕竟目前的一些框架的流行,带.php,.jsp后缀的情况很少了


Rewrite规则:

Nginx的rewrite的主要功能是实现URL地址重写。Nginx的rewrite规则需要PCRE软件的支持,即通过Perl兼容正则表达式语法进行规则匹配。

Nginx rewrite语法:

rewrite regex replacement [flag];
#应用位置:server、location、if

rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。rewrite只能放在server{},location{},if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用,例如http://seanlook.com/a/we/index.php?id=1&u=str只对/a/we/index.php重写。语法rewrite regex replacement [flag];

如果相对域名或参数字符串起作用,可以使用全局变量匹配,也可以使用proxy_pass反向代理。

表明看rewrite和location功能有点像,都能实现跳转,主要区别在于rewrite是在同一域名内更改资源的路径,而location是对一类路径做控制访问或反向代理,可以proxy_pass到其他机器。很多情况下rewrite也会写在location里,它们的执行顺序是:


 

如果其中某步URI被重写,则重新循环执行1-3,直到找到真实存在的文件;循环超过10次,则返回500 Internal Server Error错误。

flag 标志位:


在这里插入图片描述
因为301和302不能简单的只返回状态码,还必须有重定向的URL,这就是return指令无法返回301,302的原因了。这里 last 和 break 区别有点难以理解:


 

Nginx的rewrite功能在企业里应用非常广泛:


 

if 指令与全局变量:

语法为if(condition){…},对给定的条件condition进行判断。如果为真,大括号内的rewrite指令将被执行,if条件(conditon)可以是如下任何内容:


 

-f和!-f用来判断是否存在文件

-d和!-d用来判断是否存在目录

-e和!-e用来判断是否存在文件或目录

-x和!-x用来判断文件是否可执行

例如:


nginx配置详解location_nginxlocation

 

全局变量:

下面是可以用作if判断的全局变量:


nginx配置详解location_nginxlocation

nginx配置详解location_nginxlocation

常用正则:


nginx配置详解location_nginxlocation

 

小括号()之间匹配的内容,可以在后面通过$1来引用,$2表示的是前面第二个()里的内容。正则里面容易让人困惑的是转义特殊字符。

rewrite实例

例1:
···
http {


nginx配置详解location_nginxlocation

 

···
对形如/images/ef/uh7b3/test.png的请求,重写到/data?file=test.png,于是匹配到location /data,先看/data/images/test.png文件存不存在,如果存在则正常响应,如果不存在则重写tryfiles到新的image404 location,直接返回404状态码。

例2:


 

对形如/images/bla_500x400.jpg的文件请求,重写到/resizer/bla.jpg?width=500&height=400地址,并会继续尝试匹配location。

Nginx访问认证

有时需要为我们的网站设置访问账号和密码权限。
在这里插入图片描述


 

这两个参数需要说明:

auth_basic


 

auth_basic_user_file


file文件内容如下:


                                                        

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/7119.html

(0)
上一篇 2024年 5月 8日
下一篇 2024年 5月 8日

相关推荐

关注微信