意义
- 重定向
就是输入的网站之后会跳转到设定的目标网址 - rewrite
使用nginx提供的全局变量或者是自己设置的变量,结合正则表达式和标志位实现url/uri重定向
www.baidu.com--------->www.sina.com
www.baidu.com/test1---------->wwwsina.com/test2
用途
- 更换域名
- 特殊情况,比方说页面需要维护,但是我不想中断服务。
- 防盗链
rewrite跳转
1. 支持url重定向
ngx_http_rewrite_module
支持条件判断:
if语句,没有else
2. 语法配置
rewrie 正则表达式 跳转后的内容 标志位
标志位的类型
- permanent:返回码是301,永久重定向
- redirect:返回码302,临时重定向
- break:跳转时不会改变url,break是按照location的规则进行匹配的,匹配到即终止。不属于3开头的重定向范围之内。
- last:本条规则匹配完毕之后,继续向下匹配新的location规则,last一旦陷入死循环,内部循环10次就会停止,然后报错500
- break和last没有跳转的返回码,属于匹配locatin的机制。
- last一旦陷入死循环,内部循环10次就会停止,然后报错500
报错500
一、服务器故障
二、防火墙屏蔽
三、应用的端口没有启动:
1、配置文件写错了
2、有其他应用占用了本服务的端口
3、服务器资源不够,应用无法启动
4、磁盘空间不足
四、last匹配机制导致陷入死循环,10次之后就会报错500
#在loccation中添加
rewrite /test/(.*) /jx104/$1 redirect;
#(.*):正则表达式匹配的内容进行捕获
#/usr/local/nginx/html/test/index.html
#变为/usr/local/nginx/html/jx104/index.html
192.168.246.6/test
301和302
- 301永久重定向
永久性的变更ur1,搜索引擎的排名和权重会转移到新的url,客户端会保留新的url - 302临时重定向
短期的url变更,一般用在维护时,搜索引擎的排名和权重不会转移到新的url。客户端会继续访问原始的url
配置
1、基于域名的跳转
www.jx105.com---->www.jx104.com
server {
listen 80;
server namewww.xy105.com;
location / {
if ( $host = 'www.xy105.com' ) {
rewrite ^/(.*)$ http://www.xy104.com/$1 permanent;
}
root html;
index index.html index.htm;
2、基于ip的跳转
192.168.233.61,这个服务器的网页正在维护,只有本机可以访问,其他主机访问统一显示正在维护中
server {
listen 80;
server_name www.jx105.com;
set $rewrite true
#set设置变量的值,$rewrite的值设置布尔类型的true
if( $remote_addr = "192.168.233.61" ) {
#$remote_addr获取客户端请求的ip地址
set $rewrite false;
#重新定义rewrite的值是false,不进行重定向
}
if( $rewrite = true ){
rewrite (.+) /error.html;
#非192.168.233.61的ip地址,统一跳转到/errot.html的页面内容
utf-8
}
location = /error.html {
root html
}
3、基于后缀名的跳转
访问www.jx105.com/test1/index.php
就会跳转到www.jx104.com
location ~* \.php$ {
rewrite ^(.*)$ http://www.jx104.com/ permanent;
}