location和重定向

意义

  • 重定向
    就是输入的网站之后会跳转到设定的目标网址
  • rewrite
    使用nginx提供的全局变量或者是自己设置的变量,结合正则表达式和标志位实现url/uri重定向
    www.baidu.com--------->www.sina.com
    www.baidu.com/test1---------->wwwsina.com/test2

用途

  1. 更换域名
  2. 特殊情况,比方说页面需要维护,但是我不想中断服务。
  3. 防盗链

rewrite跳转

1. 支持url重定向

ngx_http_rewrite_module
支持条件判断:
if语句,没有else

2. 语法配置

rewrie 正则表达式 跳转后的内容 标志位

标志位的类型

  1. permanent:返回码是301,永久重定向
  2. redirect:返回码302,临时重定向
  3. break:跳转时不会改变url,break是按照location的规则进行匹配的,匹配到即终止。不属于3开头的重定向范围之内。
  4. 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;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值