关于Nginx跳转的常用场景模拟

关于Nginx跳转的常用场景模拟

一、Nginx跳转介绍:

现在Nginx已经成为很多公司作为前端反向代理服务器的首选,在实际工作中往往会遇到很多跳转(重写uRL)的需求。
比如:更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。
如果在后端使用的 Apache服务器,虽然也能做跳转,规则库也很强大,但是用 Nginx跳转效率会更高。

二、常用场景

①URL看起来更规范、合理;
②为了让搜索引擎搜索网站内容及用户体验更好,企业会将动态URL地址伪装成静态地址提供服务;(动态地址中有?:隐藏具体位置)
③网址更换域名后,让旧的访问跳转到新的域名上;
④服务端某些业务调整,比如根据特殊变量、目录、客户端信息进行URL调整等。

三、常用场景模拟

1、基于域名的跳转:

公司旧域名www.lrz.com有业务需求变更,需要使用新域名www.liuruizhi.com代替,但是旧域名不能废除,需要跳转到新域名,并且保持后面参数不变。

步骤:

①添加映射:

vim /etc/hosts
192.168.65.139 www.liuruizhi.com www.lrz.com

②创建日志目录:

mkdir -p /var/log/nginx/

③修改配置文件:

vim /usr/local/nginx/conf/nginx.conf 
 server {
        listen   80;
		server_name www.lrz.com;   #域名修改
		
		#charset koi8-r;
		
		access_log /var/log/nginx/www.lrz.com-access.log;  #开启并对日志保存路径进行修改
		
		location / {                #在原有location位置插入   
		   if ($host = 'www.lrz.com'){  #$host为rewrite全局变量,代表请求主机头字段或主机名  
		   rewrite ^/(.*)$ http://www.liuruizhi.com/$1 permanent;  #$1为匹配的位置变量,即域名后边的字符串,同时永久跳转
		   }
		}
 {
 ----->wq

④重启服务:

 systemctl restart nginx.service
这是,所有www.lrz.com的访问都会跳转到www.liuruizhi.com;
并且www.lrz.com/1.html会报错并且域名变为www.liuruizhi.com/1.html

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

2、基于客户端IP访问跳转:

公司业务新版本上线,要求所有IP访问任何内容都显示一个固定维护页面,只有公司IP 192.168.65.129访问正常。
注:先删除上一个实验配置。

步骤

①配置配置文件:

vim /usr/local/nginx/conf/nginx.conf
server {
        listen   80;
	    server_name www.lrz.com;   
		
		#charset koi8-r;
		
		access_log /var/log/nginx/www.lrz.com-access.log;
#设置是否是合法的IP标记
        set $rewrite true;  #变量为$rewrite,布尔值为true
#判断是否为合法IP
        if ($remote_addr = "192.168.65.129"){   #当客户端IP为192.168.65.129时,变量设置为false,不进行重写
		   set $rewrite false;
        }
#除了合法IP,其他为非法IP,重写跳转到维护页面
		if ($rewrite = true){   #布尔值为true,重写
		    rewrite (.+) /weihu.html;  #重写在访问IP后插入/weihu.html
        }
        location = /weihu.html {
            root /var/www/html; #页面返回/var/www/html/weihu.html的内容 			
        }
        location / {
        }   		
}
------->wq

②创建维护页面

mkdir -p /var/www/html
echo '<h1>this is weihu web!</h1>' > /var/www/html/weihu.html
systemctl restart nginx.service

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注:win10虚拟机:在windows/system32/drivers/etc下hosts添加映射

3、基于旧域名跳转到新域名后加目录:

当访问的是bbs.lrz.com,现在需要将这个域名下面的访问都跳转到www.liuruizhi.com/bbs下。

步骤

①创建指定目录:

mkdir -p /usr/local/nginx/html/bbs/post
echo "<h1>this is 1.html</h1>" >> /usr/local/nginx/html/bbs/post/1.html
echo "192.168.65.129 bbs.lrz.com" >> /etc/hosts

②改配置文件:

vim /usr/local/nginx/conf/nginx.conf
server {
        listen   80;
	    server_name bbs.lrz.com;   #修改域名  
		
		#charset koi8-r;
		
		access_log /var/log/nginx/www.liuruizhi.com-access.log;  #修改日志名
		#添加
		location /post {
		   rewrite (.+) http://www.liuruizhi.com/bbs$1 permanent;   
		}
		location / {		   
		}
}
------->wq

③重启服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、基于参数匹配(多余的)的跳转:

访问 www.lrz.com/100-(100|200)-100.html 会跳转到www.lrz.com。

步骤
vim /usr/local/nginx/conf/nginx.conf
server {
        listen   80;
	    server_name www.lrz.com;   #修改域名  
		
		#charset koi8-r;
		
		access_log /var/log/nginx/www.lrz.com-access.log;  #修改日志名
#$request_uri内置变量,便是URI,\d纯数字
        if ($request_uri ~ ^/100-(100|200)-(\d+)\.html$){
		#设置正则匹配
		    rewrite (.*) http://www.lrz.com permanent;
		}
}
----->wq

重启服务

5、基于目录下所有php结尾的文件跳转:

要求访问 http://www.lrz.com/upload/123.php 跳转到首页。

vim /usr/local/nginx/conf/nginx.conf
server {
        listen   80;
	    server_name www.lrz.com;   #修改域名  
		
		#charset koi8-r;
		
		access_log /var/log/nginx/www.lrz.com-access.log;
        
        location ~* /upload/.*\.php$ {
            rewrite (.+) http://www.lrz.com permanent;
		}
}
--->wq

重启服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、基于最普通一条url请求的跳转:

要求访问到一个具体的页面:www.lrz.com/abc123.html,跳转到首页。

步骤
vim /usr/local/nginx/conf/nginx.conf
server {
        listen   80;
	    server_name www.lrz.com;   #修改域名  
		
		#charset koi8-r;
		
		access_log /var/log/nginx/www.lrz.com-access.log;
        location ~* /abc/123.html {
            rewrite (.+) http://www.lrz.com permanent;
		}
}
--->wq

重启服务

四、小结:

nginx:
1、了解nginx和Apache的区别/对比:
轻量级:
定位:nginx–静态页面处理,七层应用层,http https协议
静态页面处理:最高3-5w并发

2、LNMP(结合nginx体验)
体验:nginx如何与php的fpm对接,实现动静分离

3、nginx优化与防盗链
nginx是企业中运行较多的服务之一
nginx优化—>提高用户体验,提高服务端性能

4、nginx跳转
目的:
服务体验
基于不同场景精确匹配访问的URL,指引跳转到合适的新场景

nginx跳转3种方式:
rewrite
if
location

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值