当前位置: 首页 > news >正文

rewrite规则

NGINX 中 rewrite最后的标记含义:
flag标记有:

last 相当于Apache里的[L]标记,表示完成rewrite,匹配完,再向下匹配。地址栏会显示跳转后的地址
break 终止匹配, 不再匹配后面的rewrite规则,地址栏会显示跳转后的地址
redirect 返回302临时重定向,地址栏会显示跳转后的URL
permanent 返回301永久重定向,无论是301跳转还是302跳转地址栏都会显示跳转后的URL

DNSPOD中显性URL 和 隐形URL区别 :
1. 显性URL:访问 aa 能看到地址栏显示bb,同时页面发生改变。
2. 隐形URL:访问 aa 地址栏还是显示aa,同时页面发生改变。

如果想实现访问www.aaa.com 跳转后还是www.aaa.com 同时页面展示的是www.bbb.com可以通过反向代理实现,或通过DNSPOD实现

1、rewrite配置

(1) 访问 bbs.etiantian.org或bbs.etiantian.org/(.*)  跳转到 www.baidu.com
[root@WEB extra]# cat bbs.confserver {listen       80;server_name  bbs.etiantian.org;location / {root  html/www;index index.html;}rewrite ^/      http://www.baidu.com/  permanent;            }
解释:当匹配www.etiantian.org 或 www.etiantian.org/(.*)时,则跳转到www.baidu.com (2) 访问 bbs.etiantian.org或bbs.etiantian.org/(.*)  跳转到 www.baidu.com/bbs/
server {listen       80;server_name  bbs.etiantian.org;location / {root  html/www;index index.html;}rewrite ^/      http://www.baidu.com/bbs/   permanent;            }当匹配www.etiantian.org 或 www.etiantian.org 下的任意内容时,则跳转到 www.baidu.com/bbs/(3) 访问 bbs.etiantian.org/bbs/或 bbs.etiantian.org/bbs/(.*)  跳转到 www.baidu.com/bbs/
server {listen       80;server_name  bbs.etiantian.org;location / {root  html/www;index index.html;}rewrite ^/bbs      http://www.baidu.com/bbs/   permanent;            }
当访问 bbs.etiantian.org/bbs 或 bbs.etiantian.org/bbs/ 或 bbs.etiantian.org/bbs/(.*)  跳转到 www.baidu.com/bbs/(4) 访问 bbs.etiantian.org/bbs/(.*)  跳转到 bbs.etiantian.org/www/(.*) 
server {listen       80;server_name  bbs.etiantian.org;location / {root  html/www;index index.html;}rewrite ^/bbs/(.*)      http://bbs.etiantian.org/www/$1   permanent; if ($host = 'www.playyx.com') {    rewrite ^/games/zwx/ http://www.playyx.com/games/blryy/ permanent; }}如果匹配主机头www.playyx.com, 那么当访问www.playyx.com/games/zwx   跳转到 www.playyx.com/games/blryy/
$1=(.*)访问 bbs.etiantian.org/bbs/下的任意内容,跳转到 bbs.etiantian.org/www/下的任意内容
$1=第一个(.*)
$2=第二个(.*)(5) 访问bbs.etiantian.org/下的任意内容时, 跳转到 www.baidu.com/下的任意内容
server {listen       80;server_name  bbs.etiantian.org;location / {root  html/www;index index.html;}rewrite ^/(.*)      http://www.baidu.com/$1  permanent;   }^/(.*)                                                           //bbs.etiantian.org/下的任意内容
http://www.baidu.com/$1                         //www.baidu.com/下的任意内容, $1=(.*)解释:
当访问 bbs.etiantian.org/(.*)   跳转到 www.baidu.com/(.*) (6) 访问bbs.etiantian.org/bbs 跳转到 www.etiantian.org/abcserver {listen       80;server_name  bbs.etiantian.org;location / {root  html/www;index index.html;}rewrite ^/(.*)   http://www.etiantian.org/abc/$1 permanent;
}
解释:
当匹配 bbs.etiantian.org下的任意内容时,则访问  www.etiantian.org/bbs/ 下的任意内容(7) 访问:bbs.etiantian.org/download/(.*)/media/(.*) 时,跳转到:www.etiantian.org/(.*)/mp3/(.*).mp3 
[root@web-31 extra]# cat www.conf server {listen       80;server_name  bbs.etiantian.org;location / {root  html/www;index index.html;}rewrite ^/download/(.*)/media/(.*)$ http://www.etiantian.org/$1/mp3/$2.mp3 last;
}
解释:
当访问:bbs.etiantian.org/download/(.*)/media/(.*) 时,跳转到:www.etiantian.org/(.*)/mp3/(.*).mp3 $1=(/download/.*)=test1
$2=(.*)=test2(8)nginx上配有aaa.example.com的虚拟主机,现在需要将访问http://aaa.example.com/api/x.x/client/的请求转到http://bbb.example.com:8001/api/x.x/client/,bbb.example.com的虚拟主机在另外一台nginx上,其中x.x表示位数不定的版本号,如:1.0或1.20.345都可能。请求转过去要求url保持不变
server {listen 80;server_name aaa.example.com;location / {root /alidata/www/static;index index.html;}rewrite ^/api/(.*)/client/(.*)$  http://bbb.example.com:8001/api/$1/client/$2 permanent;
}

2、某公司线上配置rewrite
(1) nginx主配置文件

# cat /alidata/nginx/conf.d/upstream.conf#反向代理地址池
upstream playyx_com {                      server 10.1.10.10:81;
}server
{listen  80;server_name  ht.playyx.com xl.playyx.com www.rocen.com.cn;location / {include /alidata/nginx/conf.d/go2eu/tupian.conf;              #跳转到rewrite配置文件proxy_pass        http://playyx_com;                          #反向代理指向地址池proxy_next_upstream http_502 http_504 error timeout invalid_header;proxy_set_header   Host             $host;                    # $host表示主机头,也就是被访问域名proxy_set_header   X-Real-IP        $remote_addr;proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;   }location ~* \.(cvs|svn|git|hg|bzr|sql|phar|tpl|sh|log)$ {deny  all;
}location ~* /\.svn/ {deny all;
}
}
http://www.lryc.cn/news/528519.html

相关文章:

  • Android车机DIY开发之学习篇(七)NDK交叉工具构建
  • 【初/高中生讲机器学习】0. 本专栏 “食用” 指南——写在一周年之际⭐
  • 虚幻基础11:坐标计算旋转计算
  • Rust:Rhai脚本编程示例
  • 关于el-table翻页后序号列递增的组件封装
  • 【深度学习】softmax回归
  • 设计模式-建造者模式、原型模式
  • 【Redis】List 类型的介绍和常用命令
  • 三个不推荐使用的线程池
  • mybatis(78/134)
  • Progressive Pretext Task Learning for Human Trajectory Prediction | 文献翻译
  • 54.数字翻译成字符串的可能性|Marscode AI刷题
  • 【数据结构】_链表经典算法OJ(力扣版)
  • 【Linux】统计文本中每行指定位置出现的字符串的次数
  • 【赵渝强老师】K8s中Pod探针的ExecAction
  • 商品信息管理自动化测试
  • Redis实战(黑马点评)——redis存储地理信息、位图、HyperLogLog 用法
  • 判断1到100之间有多少个素数,并输出所有的素数。
  • JAVA:利用 Content Negotiation 实现多样式响应格式的技术指南
  • layui Table单元格编辑支持Enter键换行,包括下拉框单元格
  • Swoole的MySQL连接池实现
  • 无人机红外热成像:应急消防的“透视眼”
  • 【redis】Redis操作String类型key的发生了什么?
  • hdfs之读写流程
  • 研发的立足之本到底是啥?
  • Baklib揭示内容中台与人工智能技术的创新协同效应
  • 智慧消防营区一体化安全管控 2024 年度深度剖析与展望
  • 自定义数据集,使用 PyTorch 框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测
  • UE5 特效
  • CMAKE工程编译好后自动把可执行文件传输到远程开发板