Nginx的rewrite

Nginx的rewrite

理论支持

Rewrite跳转场景

URL看起来更规范、合理
企业会将动态URL地址伪装成静态地址提供服务
网址换新域名后,让旧的访问跳转到新的域名上
服务端某些业务调整

Rewrite实际场景

Nginx跳转需求的实现方式
使用rewrite进行匹配跳转
使用if匹配全局变量后跳转
使用location匹配再跳转
rewrite放在server{ },if{ },location{ }段中
location只对域名后边的除去传递参数外的字符串起作用
对域名或参数字符串
使用if全局变量匹配
使用proxy_pass反向代理

Nginx正则表达式

在这里插入图片描述

Rewrite命令

Rewrite命令语法
rewrite <正则> <跳转后的访问> [flag]

flag标记说明
在这里插入图片描述

last和break的区别

last一般写在server和if中,不终止重写后的url匹配;
break一般使用在location中,终止重写后的url匹配;

location分类

按优先级排序:
精确匹配
前缀匹配
正则匹配
普通匹配
通用匹配

rewrite和location

相同点
都能实现跳转
不同点
rewrite是在同一域名内更改获取资源的路径
location是对一类路径做控制访问或反向代理,还可以proxy_pass到其他机器
rewrite会写在location里,执行顺序
执行server块里面的rewrite指令
执行location匹配
执行选定的location中的rewrite指令

实例

基于域名

1.vim /etc/nginx.conf
server {
server_name www. mcc. com;
if ($host = ’ www. mcc.com’)
{
rewrite ^/(.*)$ http: //www.mcc2.com/$1 permanent
}
}
2.添加新域名www.mcc2.com的站点位置
server {
listen   80;
server_name  www. mcc2.com;
charset utf-8;
access_log /var/log/nginx/www. newdomain. com-access. Log  main;
location / {
root   /usr/ share/nginx/html;
index   index. html index.htm;
}
3.mkdir /var/log/nginx
4.mkdir –p /usr/share/nginx/html
echo “this is a test web” > /usr/share/nginx/html/index.html
5.重启nginx
systemctl restart nginx
6. vim /etc/hosts
192.168.17.10 www.mcc.com www.mcc2.com

效果图
在这里插入图片描述
在这里插入图片描述
在浏览器输入的域名为mcc,自动跳转至mcc2

基于客户端IP

1.	vim /etc/nginx.conf
server {
        listen       80;
        server_name  www.mcc.com;
        set $rewrite true;
        if ($remote_addr = "192.168.17.10") {
        set $rewrite false;
}
       if ($rewrite = true) {
       rewrite (.+) /maintenance.html;
}
      location = /maintenance.html {
      root /usr/share/nginx/html;
}

2.	建网页
vim /usr/share/nginx/html/maintenance.html

效果图
在这里插入图片描述
在这里插入图片描述

在本机访问则显示首页;其他机器访问则显示正在维护

基于参数匹配跳转

vim /etc/nginx.conf
server {
        listen       80;
        server_name  www.mcc.com;

        charset utf-8;
        if ($request_uri ~ ^/100-(100|200)-(\d+).html$) {
        rewrite (.*) http://www.mcc.com permanent;
}

效果图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基于目录下所有php文件的跳转

server {
        listen       80;
        server_name  www.mcc.com;

        charset utf-8;
        location ~* /upload/.*\.php$ {
        rewrite (.+) http://www.mcc.com permanent;
}

效果图
在这里插入图片描述

基于普通url请求的跳转

server {
        listen       80;
        server_name  www.mcc.com;

        charset utf-8;
        location ~* ^/1/test.html {
        rewrite (.+) http://www.mcc.com permanent;
}

效果图
在这里插入图片描述
在这里插入图片描述

基于旧 新域名并加目录

vim /etc/nginx.conf
 server {
       listen 80;
       server_name bbs.mcc.com;
       charset utf-8;
       access_log /var/log/nginx/bbs.mcc.com-access.log main;
      location  /post {
      rewrite (.+) http://www.mcc.com/bbs$1 permanent;
             }
       location  /  {
           root  /usr/share/nginx/html;
           index index.html index.htm;
         }
}


2.	创建bbs目录
cd /usr/local/nginx/html
mkdir –p /bbs/post
cd /bbs/post
vim 1.html
11111111
3.	键映射
vim /etc/hosts
192.168.17.10 www.mcc.com bbs.mcc.com

效果图
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值