网站首页 > 技术教程 正文
location ~ .*\.(sh|bash)?$ {
return 403;
}
~是区分大小写的匹配。
? 是匹配前面的字符零次或者一次。
状态码403是Fobidden,表示服务器已经理解请求,但是拒绝执行它。
访问的URL以.sh或.bash结尾,则返回状态码403。
403表示服务器已经理解请求,但是拒绝执行它。
---我是华丽的分隔线---
rewrite指令的语法是:
rewrite regex replacement flag
关键字 正则表达式 替换部分 标记
if ($host ~* www\.(.*) {
set $host_without_www $1;
rewrite ^(.*)$ http://$host_without_www$1 permanent;
}
这里把server_name的主机名,去掉www的后面部分,赋值给了变量$host_without_www。
重写表达式只对相对路径有效,配对主机名,应该使用if语句。
permanent是返回301永久重定向。
这里的$1是/foo,而不是www.mydomain.com/foo。
---我是华丽的分隔线---
rewrite指令的最后一项参数是flag标记,支持的标记有:
last:相当于apache里面的[L],表示完成rewrite。
break:本条规则匹配完成后,终止匹配,不再匹配后面的规则。
redirect:返回302临时重定向。
permanent:返回301永久重定向。
其中last和break用来实现URL重写,浏览器地址栏的URL地址不变;redirect和permanent浏览器的地址栏会显示跳转之后的URL地址。
一般使用alias指令时,必须要用last指令;使用proxy_pass指令时要用break标记。last标记在本条规则执行完毕后,会对其所在的server {…}标签重新发起请求,而break标记则在本条规则匹配完毕后,终止匹配,不再匹配后面的规则。
一般在根location中,即location/{……}或者直接在server标签中编写rewrite规则,使用last标记,在非根location中,则使用break标记。
---我是华丽的分隔线---
/photos/123456重定向到:
/path/to/photos/12/1234/123456.png 可以使用大括号进行分割代码块。
可以用下面的方法:
rewrite "/photos/([0-9]{2})([0-9]{2})([0-9]{2})"
/path/to/photos/$1/$1$2/$1$2$3.png;
[0-9]匹配数字
{n}表示重复几次。
nginx rewrite指令的写法是:
rewrite regex replacement flag
-----我是华丽的分隔线----
*匹配前面的表达式零次或者多次
+匹配前面的表达式一次或者多次
?匹配前面的子表达式零次或者一次
---我是华丽的分隔线----
set variable value
set指令用来定义一个变量,并且给变量赋值。
多目录转换成参数abc.domain.com/sort/2 => abc.domain.com/index.php?act=sort&name=abc&id=2:
if ($host ~* (.*)\.domain\.com) {
set $sub_name $1;
rewrite ^/sort\/(\d+)\/?$ /index.php?act=sort&cid=$sub_name&id=$1 last;
}
这里~*不区分大小写匹配。
sub_name变量设置的值是域名的前缀abc。
\/反斜杠\用来转义斜杠。
\d匹配一个数字字符,等价于[0-9]
+匹配前面的字符一次或者多次
?匹配前面的字符零次或者一次。
\/?匹配URL末尾有/或者没有/。
rewrite表达式中,把(\d+)赋值给了id,其实就是id=2。
---我是华丽的分隔线---
目录对换:
/123456/xxxx->/xxxx?id=123456:
rewrite ^/(\d+)/(.+)/ /$2?id=$1 last;
这里\d匹配1个数字字符,等价于[0-9]。
+匹配前面的字符一次或者多次。
.点匹配任意一个单字符,+匹配前面的字符一次或者多次。
一般在根location中,即location/{……}或者直接在server标签中编写rewrite规则,使用last标记,在非根location中,则使用break标记。
---我是华丽的分隔线---
如果apache的rewrite规则改成nginx的rewrite规则后,使用nginx -t 命令检查发现nginx.conf配置文件有语法错误,那么主要是大括号引起的,那么可以尝试给条件加上引号。
---我是华丽的分隔符----
①:Apache的RewriteCond指令对应Nginx的if指令;
②:Apache的RewriteRule指令对应Nginx的rewrite指令;
③:Apache的[R]标记对应nginx 的redirect标记;
④:Apache的[P]标记对应Nginx的last标记;
⑤:Apache的[R,L]标记对应Nginx的redirect标记;
⑥:Apache的[P,L]标记对应Nginx的last标记。
⑦:Apache的[PT,L]标记对应Nginx的last标记。
鼓励的话语:强者从不抱怨环境!
猜你喜欢
- 2024-09-09 「Nginx」Web/代理服务器的瑞士军刀:重写与定位
- 2024-09-09 ingress-nginx常用注解指南(nginx详细讲解)
- 2024-09-09 Nginx反向代理常用配置(nginx反向代理设置)
- 2024-09-09 nginx+springboot使用https重定向的解决办法
- 2024-09-09 Nginx从0基础到进阶实战!运维工程师必看
- 2024-09-09 深度|掌握Nginx监控运维,这一篇足矣!
- 2024-09-09 详解nginx配置location总结及rewrite规则写法
- 2024-09-09 nginx 使用技巧配置(nginx 配置详解)
- 2024-09-09 nginx之Rewrite实战(nginx rewrite_by_lua)
- 2024-09-09 详解 Nginx配置静态内容服务器|附案例说明
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)