语法规则

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规则详解
# 配上
# 判断是否
# 后端
# 首页
# 重定向
# 是一个
# 这是
# 不带任何
# 都不
# 你可以
# 第一个
# 多个
# 如有
# 也能
# 而来
# 第二个
# 还未
# 这个时候
# 如是说
# 有两种
相关文章:
如何通过VPS搭建网站快速盈利?
网站制作员失业,怎样查看自己网站的注册者?
怎么将XML数据可视化 D3.js加载XML
开封网站制作公司,网络用语开封是什么意思?
建站之星代理如何优化在线客服效率?
如何通过IIS搭建网站并配置访问权限?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
兔展官网 在线制作,怎样制作微信请帖?
建站之星如何取消后台验证码生成?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
宝塔建站助手安装配置与建站模板使用全流程解析
宝塔建站后网页无法访问如何解决?
javascript中对象的定义、使用以及对象和原型链操作小结
如何在阿里云完成域名注册与建站?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
如何零成本快速生成个人自助网站?
如何用低价快速搭建高质量网站?
常州企业建站如何选择最佳模板?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
建站之星IIS配置教程:代码生成技巧与站点搭建指南
PHP 500报错的快速解决方法
宝塔Windows建站如何避免显示默认IIS页面?
如何快速查询域名建站关键信息?
建站之星后台管理:高效配置与模板优化提升用户体验
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
已有域名能否直接搭建网站?
制作网站的公司有哪些,做一个公司网站要多少钱?
如何打造高效商业网站?建站目的决定转化率
建站之星会员如何解锁更多建站功能?
网站图片在线制作软件,怎么在图片上做链接?
如何选择美橙互联多站合一建站方案?
如何通过NAT技术实现内网高效建站?
如何用PHP快速搭建高效网站?分步指南
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
建站之星微信建站一键生成小程序+多端营销系统
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
网站微信制作软件,如何制作微信链接?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
图册素材网站设计制作软件,图册的导出方式有几种?
建站之星安装需要哪些步骤及注意事项?
如何通过.red域名打造高辨识度品牌网站?
建站之星伪静态规则如何设置?
高防服务器租用如何选择配置与防御等级?
如何破解联通资金短缺导致的基站建设难题?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
C++时间戳转换成日期时间的步骤和示例代码
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
*请认真填写需求信息,我们会在24小时内与您取得联系。