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

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.conf

server {

        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/abc
 server {
        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.kler.cn/a/519589.html

相关文章:

  • LongLoRA:高效扩展大语言模型上下文长度的微调方法
  • 第 25 场 蓝桥月赛
  • 国产编辑器EverEdit - 大纲视图
  • 嵌入式蓝桥杯电子赛嵌入式(第14届国赛真题)总结
  • FreeRtos的使用教程
  • 正则表达式基础与应用
  • STL中的list容器
  • 汇编的使用总结
  • CSS:跑马灯
  • 使用MQTT.fx向阿里云物理网平台上报物理模型数据
  • mysql安装记录
  • 十、VUE中的CSS
  • 边缘存储如何高效存储和调用数据?
  • “AI教学实训系统:打造未来教育的超级引擎
  • C# OpenCV机器视觉:利用CNN实现快速模板匹配
  • 【JS|第29期】JavaScript中的事件类型
  • 【PySide6 快速入门】第一个QtWidget程序
  • 1_相向双指针_leetcode_16_4
  • AWS Outposts
  • 低代码系统-钉、微表单控件对比
  • VMware 的 AWS
  • 【C++高并发服务器WebServer】-5:内存映射与进程通信
  • 【中间件快速入门】什么是Redis
  • Java使用FFM API调用SDL
  • Web3与传统互联网的对比:去中心化的未来路径
  • 随机矩阵投影长度保持引理及其证明