语法规则

location [=|~|~*|^~] /uri/ { … }
| 模式 | 含义 |
|---|---|
| location = /uri | = 表示精确匹配,只有完全匹配上才能生效 |
| location ^~ /uri | ^~ 开头对URL路径进行前缀匹配,并且在正则之前。 |
| location ~ pattern | 开头表示区分大小写的正则匹配 |
| location ~* pattern | 开头表示不区分大小写的正则匹配 |
| location /uri | 不带任何修饰符,也表示前缀匹配,但是在正则匹配之后 |
| location / | 通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default |
前缀匹配时,Nginx 不对 url 做编码,因此请求为 /static/20%/aa ,可以被规则 ^~ /static/ /aa 匹配到(注意是空格)
多个 location 配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考):
注意:前缀匹配,如果有包含关系时,按最大匹配原则进行匹配。比如在前缀匹配: location /dir01 与 location /dir01/dir02 ,如有请求 http://localhost/dir01/dir02/file 将最终匹配到 location /dir01/dir02
例子,有如下匹配规则:
location = / {
echo "规则A";
}
location = /login {
echo "规则B";
}
location^~ /static/ {
echo "规则C";
}
location^~ /static/files {
echo "规则X";
}
location ~ \.(gif|jpg|png|js|css)$ {
echo "规则D";
}
location ~* \.png$ {
echo "规则E";
}
location /img {
echo "规则Y";
}
location / {
echo "规则F";
}
那么产生的效果如下:
/ ,比如 http://localhost/ 将匹配 规则Ahttp://localhost/login 将匹配 规则B , http://localhost/register 则匹配 规则F http://localhost/static/a.html 将匹配 规则Chttp://localhost/static/files/a.exe 将匹配 规则X ,虽然 规则C 也能匹配到,但因为最大匹配原则,最终选中了 规则X 。你可以测试下,去掉规则 X ,则当前 URL 会匹配上 规则C 。http://localhost/a.gif , http://localhost/b.jpg 将匹配 规则D 和 规则 E ,但是 规则 D 顺序优先, 规则 E 不起作用,而 http://localhost/static/c.png 则优先匹配到 规则 C http://localhost/a.PNG 则匹配 规则 E ,而不会匹配 规则 D ,因为 规则 E 不区分大小写。 http://localhost/img/a.gif 会匹配上 规则D ,虽然 规则Y 也可以匹配上,但是因为正则匹配优先,而忽略了 规则Y 。http://localhost/img/a.tiff 会匹配上 规则Y 。访问 http://localhost/category/id/1111 则最终匹配到规则 F ,因为以上规则都不匹配,这个时候应该是 Nginx 转发请求给后端应用服务器,比如 FastCGI(php),tomcat(jsp),Nginx 作为反向代理服务器存在。
所以实际使用中,笔者觉得至少有三个匹配规则定义,如下:
# 直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,官网如是说。
# 这里是直接转发给后端应用服务器了,也可以是一个静态首页
# 第一个必选规则
location = / {
proxy_pass http://tomcat:8080/index
}
# 第二个必选规则是处理静态文件请求,这是 nginx 作为 http 服务器的强项
# 有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
location ^~ /static/ {
root /webroot/static/;
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
root /webroot/res/;
}
# 第三个规则就是通用规则,用来转发动态请求到后端应用服务器
# 非静态文件请求就默认是动态请求,自己根据实际把握
# 毕竟目前的一些框架的流行,带.php、.jsp后缀的情况很少了
location / {
proxy_pass http://tomcat:8080/
}
rewrite 语法
1、下面是可以用来判断的表达式:
2、下面是可以用作判断的全局变量
例:
http://localhost:88/test1/test2/test.php?k=v $host:localhost $server_port:88 $request_uri:/test1/test2/test.php?k=v $document_uri:/test1/test2/test.php $document_root:D:\nginx/html $request_filename:D:\nginx/html/test1/test2/test.php
redirect 语法
server {
listen 80;
server_name start.igrow.cn;
index index.html index.php;
root html;
if ($http_host !~ "^star\.igrow\.cn$") {
rewrite^(.*) http://star.igrow.cn$1 redirect;
}
}
防盗链
location ~* \.(gif|jpg|swf)$ {
valid_referers none blocked start.igrow.cn sta.igrow.cn;
if ($invalid_referer) {
rewrite^/ http://$host/logo.png;
}
}
根据文件类型设置过期时间
location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
if (-f $request_filename) {
expires 1h;
break;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# nginx
# location
# 匹配
# 匹配规则
# Nginx反向代理location和proxy_pass配置规则详细总结
# Nginx的location的常见规则优先级问题
# nginx 配置location匹配规则实例讲解
# Nginx Location指令URI匹配规则详解小结
# Nginx location匹配规则的方法示例
# nginx配置location总结location正则写法及rewrite规则写法
# 详解nginx配置location总结及rewrite规则写法
# Nginx服务器的location指令匹配规则详解
# nginx中的路径匹配location规则详解
# 配上
# 判断是否
# 后端
# 首页
# 重定向
# 是一个
# 这是
# 不带任何
# 都不
# 你可以
# 第一个
# 多个
# 如有
# 也能
# 而来
# 第二个
# 还未
# 这个时候
# 如是说
# 有两种
相关文章:
如何在IIS7中新建站点?详细步骤解析
如何高效生成建站之星成品网站源码?
,制作一个手机app网站要多少钱?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
建站之星安全性能如何?防护体系能否抵御黑客入侵?
如何通过智能用户系统一键生成高效建站方案?
黑客如何利用漏洞与弱口令入侵网站服务器?
建站与域名管理如何高效结合?
如何构建满足综合性能需求的优质建站方案?
建站主机解析:虚拟主机配置与服务器选择指南
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
网站制作员失业,怎样查看自己网站的注册者?
如何获取免费开源的自助建站系统源码?
昆明高端网站制作公司,昆明公租房申请网上登录入口?
宁波自助建站系统如何快速打造专业企业网站?
如何通过VPS搭建网站快速盈利?
文字头像制作网站推荐软件,醒图能自动配文字吗?
北京的网站制作公司有哪些,哪个视频网站最好?
专业公司网站制作公司,用什么语言做企业网站比较好?
建站之星后台密码遗忘?如何快速找回?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
如何登录建站主机?访问步骤全解析
建站中国官网:模板定制+SEO优化+建站流程一站式指南
如何选择建站程序?包含哪些必备功能与类型?
XML的“混合内容”是什么 怎么用DTD或XSD定义
建站之星安装需要哪些步骤及注意事项?
建站主机如何选?高性价比方案全解析
如何使用Golang table-driven基准测试_多组数据测量函数效率
怎么将XML数据可视化 D3.js加载XML
如何快速上传建站程序避免常见错误?
一键网站制作软件,义乌购一件代发流程?
如何通过山东自助建站平台快速注册域名?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
如何用西部建站助手快速创建专业网站?
黑客如何通过漏洞一步步攻陷网站服务器?
个人摄影网站制作流程,摄影爱好者都去什么网站?
测试制作网站有哪些,测试性取向的权威测试或者网站?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
济南专业网站制作公司,济南信息工程学校怎么样?
怀化网站制作公司,怀化新生儿上户网上办理流程?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
微信推文制作网站有哪些,怎么做微信推文,急?
如何正确选择百度移动适配建站域名?
如何在景安云服务器上绑定域名并配置虚拟主机?
建站之星图片链接生成指南:自助建站与智能设计教程
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
*请认真填写需求信息,我们会在24小时内与您取得联系。