Nginx的rewrite跳转
一.Nginx跳转
1.跳转的作用和特点
1)跳转的作用
方便管理员对网站进行临时维护
2)Nginx跳转的特点
支持网站重定向
方便业务调整
方便故障维护
2.Nginx跳转实现的方式
1)rewrite进行匹配跳转
根据用户输入的内容匹配正则表达式进行跳转
2)使用if匹配全局变量后跳转
使用条件判断,满足条件进行跳转
3)使用location匹配在跳转
用户访问nginx网站根目录匹配正则表达式后跳转
3.配置跳转所在的位置
1)rewrite应用的位置
在Nginx配置文件的Server{}中
2)if判断
保存在Nginx配置文件网站根目录
if{}
3)Location
卸载nginx配置文件中的虚拟主机根中
4.正则表达式元字符类型
1)^ 匹配字符串开始位置
$ 匹配字符串结束位置
- 匹配前边字符零次或者多次
- 匹配前边字符一次或者多次 ? 匹配前边字符零次或者一次 . 匹配除\n之外的任何一个单字符 \ 转意字符 \d 匹配数字 [c] 匹配单个字符 [a-zA-Z] 匹配小写和大写到a-z任意字符 5.rewrite语法和标记方式 1)rewrite的语法 rewrite [正则表达式] [跳转内容] [flag标记] 2)flag标记的类型 last:匹配使用rewrite跳转 break:匹配即停止,匹配以后不再往下检查正则表达式 redirect:使用302临时跳转,浏览器显示跳转后网址 permanent:使用301永久跳转,浏览器显示跳转后网址 6.location类型和正则表达式 1)location类型 Location = patt{} [精准匹配] Location patt{} [一般匹配] Location ~ patt{} [正则表达式匹配] 2)正则表达式匹配 ^~:普通字符匹配,使用前缀匹配,匹配以后不再匹配其他location =:精准匹配,完全匹配 @:定义命名location,使用在内部定向时 3)正则表达式优先级 精准匹配 ^~普通字符匹配 正则表达式 常规字符串匹配类型,按前缀匹配 通用匹配(/),没有匹配到通用匹配中 7.rewrite跳转和location 1)rewrite 适合网站内部进行跳转 2)Location 适合两台网站服务器之间配置跳转 先安装Nginx 给一个域名捆绑两个地址 二.配置跳转 1.基本域名跳转 1)修改nginx
[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name www.benet.com;
charset utf8;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 192.168.100.10:80;
server_name bbs.benet.com;
location / {
if (KaTeX parse error: Expected '}', got 'EOF' at end of input: … rewrite ^/(.*)http://www.benet.com/KaTeX parse error: Expected 'EOF', got '}' at position 14: 1 permanent; }̲ } } ![在这里插入图片描…request_uri ~ ^/*.htmlKaTeX parse error: Expected '}', got 'EOF' at end of input: … rewrite ^/(.*)http://www.benet.com/$1 permanent;
}}}}
- 2.创建虚拟机主机网站根目录 [root@centos01 ~]# mkdir /code/ [root@centos01 ~]# echo “www.benet.com” > /code/index.html 3)客户端验证跳转到nginx默认网站主页 http://www.benet.com/index.html 3.配置网站升级管理员IP地址192.168.100.50可以访问其他人访问报错 1)修改nginx主配置文件
• [root@centos01 ~]# echo “www.benet.com” > /code/index.html
server {
listen 80;
server_name www.benet.com;
charset utf8;
#access_log logs/host.access.log main;
location / {
root /code/;
index index.html error.html;
set
r
e
w
r
i
t
e
t
r
u
e
;
i
f
(
rewrite true; if (
rewritetrue;if(remote_addr = “192.168.100.50”) {
set KaTeX parse error: Expected 'EOF', got '}' at position 23: … false; }̲ if (rewrite = true) {
rewrite (.+) /error.html;
}
location = /error.html {
root /error/;
}
}
} }
2)创建错误页面
[root@centos01 ~]# mkdir /error
[root@centos01 ~]# echo “www.error.com” > /error/error.html
失败页面
成功页面
3)客户端访问测试
www.benet.com
4.当用户访问www.benet.com/upload/index.php跳转到www.accp.com域名的主页上
1)修改nginx主配置文件
[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name www.benet.com;
charset utf8;
#access_log logs/host.access.log main;
location / {
root /code/;
index index.html index.php;
}
location ~* /upload/.*.php$ {
rewrite (.+) http://www.accp.com/ permanent;
}}
server {
listen 80;
server_name www.accp.com;
location / {
root /accp/;
index index.html;
}}}
2)创建benet.com目录
[root@centos01 ~]# mkdir /code/upload/
[root@centos01 ~]# echo “www.benet.com.php” > /code/upload/index.php
3)创建accp.com目录
[root@centos01 ~]# mkdir /accp
[root@centos01 ~]# echo “www.accp.com” > /accp/index.html
修改hosts文件
4)客户端访问
http://www.benet.com/upload/index.php 测试页面
测试成功!
感谢观看!拜拜ヾ(•ω•`)o啊😊😀😁