Nginx location 与 Rewrite

Nginx正则表达式

location

通过前缀或正则匹配用户的URL访问路径做页面跳转、访问控制和代理转发

location 大致可以分为三类:

精准匹配:location = / {...}

一般匹配:location / {...}

正则匹配:location ~ / {...}

location 常用的匹配规则:

= :进行普通字符精确匹配,也就是完全匹配。

^~ :表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其它 正则匹配location。

~ :区分大小写的匹配。

~* :不区分大小写的匹配。

!~ :区分大小写的匹配取非。

!~* :不区分大小写的匹配取非。

location匹配机制:

优先级:精准匹配 = > 最长前缀匹配 ^~ > 正则匹配 ~ ~* !~ !~* > 一般前缀匹配 /XXXX > 通用匹配 /

在没有合适的精准匹配的情况下,先看前缀匹配的长度,取最长匹配的location(如果此最长匹配是带有^~的则不再看正则匹配;如果此最长匹配是不带有^~的则会继续再看正则匹配)

前缀匹配看长度,最长的优先匹配;正则匹配看上下顺序,根据nginx配置文件的配置由上往下依次匹配,匹配到即停止

网站匹配规则

#网站首页匹配

location = / {

root 网页根目录;

index index.html;

}

#网站静态页面,通过前缀匹配或通用匹配在nginx服务器本地处理

location ~ /static/ {

root 目录;

}

location / {

root 目录;

}

#网站动态页面,通过匹配不同的动态网页文件后缀转发给不同的后端应用服务器处理

location \.php$ {

fastcgi_pass PHP服务器地址:端口;

}

location \.jsp$ {

proxy_pass TOMCAT服务器地址:端口;

}

rewrite

对用户的URL访问路径进行重写,再重定向跳转访问重写后的路径

rewrite格式

rewrite 正则表达式 重写的地址 标记位;

last break permanent redirect

###flag标记说明###

last :本条规则匹配完成后,不终止重写后的url匹配,一般用在 server 和 if 中。

break :本条规则匹配完成即终止,终止重写后的url匹配,一般使用在 location 中。

redirect :返回302临时重定向,浏览器地址会显示跳转后的URL地址。

permanent :返回301永久重定向,浏览器地址栏会显示跳转后的URL地址。

rewrite默认情况下只对从域名后面的根目录 / 开始到传递参数的 ? 号前面的URL路径进行重写

rewrite 正则表达式 /新URL; http://域名/旧URL -> http://域名/新URL #默认只对域名后面的URL部分重写

rewrite 正则表达式 http://新域名/新URL; http://旧域名/旧URL -> http://新域名/新URL; #如果需要全域名路径重写需要加上协议和域名

http://域名/旧URL --rewrite重写--> http://域名/新URL --> location匹配新URL路径跳转页面

rewrite 正则表达式 /新URL permanent; #重写后会修改浏览器里的地址栏再重新访问

http://域名/旧URL --rewrite重写--> http://域名/新URL --> 浏览器地址栏也会改为 http://域名/新URL 再发起一次访问请求 --> location匹配新URL路径跳转页面

location ~ URL路径正则表达式 {

rewrite 正则表达式 重写的地址 标记位;

}

$request_uri

if ($uri ~ URL路径正则表达式) {

rewrite 正则表达式 重写的地址 标记位;

}

rewrite示例

相关推荐
不可能片场4 小时前
内容运营自动化 配图折行别把词切两半
前端·electron
Lank_M4 小时前
HEIC转JPG统一转sRGB,P3高饱和色就回不来了
前端
补码缩写4 小时前
sharp默认转JPG颜色没错,ICC和EXIF却全没了
前端
用户7783366132114 小时前
SerpBase AI Overview 引用卡片:React 组件实战
前端
林小帅4 小时前
【笔记】Prisma v7 + SQLite TS2305 及连锁 TS7006 问题
前端·javascript·后端
HUANGZHENXUAN1234 小时前
最大子矩阵和:从 O(n⁴) 到 O(n³) 的列压缩 + Kadane
c语言·前端
H.莓飛5 小时前
【C++】【STL】vector_OJ题
linux·服务器·开发语言·数据结构·c++·visual studio
Rabitebla5 小时前
【Linux操作系统】进程篇(十一):进程程序替换——从底层原理到 exec 函数族
linux·服务器·c++·笔记·学习·算法
沫璃染墨5 小时前
从零入门计算机网络系列(十五):TCP可靠传输机制详解——从序号与确认应答到乱序处理
服务器·网络·c++·tcp/ip·tcp
叼烟扛炮6 小时前
[LangChain] 学习笔记(03):打破失忆症——对话机制与上下文管理
java·前端·javascript·笔记·学习·langchain