nginx重定向

nginx的重定向

location 匹配

location 匹配的就是后面的URI

/wordpress

location 匹配的分类和优先级**

1、精确匹配 location = / 对字符串进行完全匹配,必须完全符合

2、正则匹配

^~ 前缀匹配, 以什么开头

-区分大小写的匹配

~*不区分大小写

!~ :区分大小写的取反

!~* 不区分大小写的取反

3、一般匹配

location / 字符串

精确匹配的优先级最高 正则 一般

优先级总结

location =完整路径 >location^~ > location~ location~* > location/ 部分起始位置 >location

location = / {

   root html

​    index index.html  index.htm index.php

}

网站首页

第二个必选额规则:处理静态请求的页面

location ^~ /static/ {

​    root /web static/;

  index index.html indexhem;



}

用来匹配静态页面

location ~* `\.`  {

 root /web/picturs /;

  index index.heml index.heml;

}

访问 图片或者指定的后缀名

第三个规则,一般是通用规则,用转发.php .js 为后缀的动态请求到后盾服务器(数据库)

location / {

proxy_pass

}

抓发后台请求和负载均衡

rewrite重定向:

rewite 就是把当前访问的页面跳转到其他页面。

rewite 的工作方式:通过nginx的全局变量或者自定义变量,结合正则表达式和标志位实现URI的重定向

nginx的变量

$ uri 客户端请求的URI地址

$host 请求的主机名

#http_user_agent:客户端请求的浏览器和操作系统

$http_referer:请求头的referer信息,表示当前页面来源的URI

$ remote_addr:客户端的IP地址

$remote_port:客户端的端口号

$server_addr:服务端的IP地址

$server_port:服务端的端口号

$request_method:获取客户请求的方法

$scheme:请求的协议,要么是http要么是https

x_forwarded_for:用来请求头中当中客户端真实IP地址。代理服务器添加,在代理服务器中只是客户端的IP地址

X-Real-IP:客户端真是IP地址

nginx.conf

proxy_set_header X-Real_IP $remote_addr

标志位

flag

permanent:永久重定向,返回码是301,浏览器地址栏会显示跳转后的url地址

redirect:临时重定向,返回码是302,浏览器地址栏会显示跳转后的url地址

break:永久重定向,返回码也是301,但是他匹配到规则之后不会向下匹配其他规则,url也不会发生变化

last:重定向,但是会继续向下匹配其他的location规则

rewrite的执行顺序:

1、server模块的rewrite优先级最高

2、匹配location的规则

3、执行选定的location规则。

rewrite的语法

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

在重定向过程中,使用last就会陷入死循环 nginx默认循环十次超过十次就会自动结束循环返回码为500

基于域名,老的不用了,能够访问 直接跳到新域名

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

        charset utf-8;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            if ( $host = 'www.xy102.com'){
                 rewrite ^/(.*)$ http://www.cj.com/$1 permanent;

         }
        }

然后映射

20.0.0.20 www.xy102.com www.cj.com

放入内容html目录下

root@test2 html]# pwd
/usr/local/nginx/html
[root@test2 html]# echo 123 > index.html
[root@test2 html]# ls
50x.html  index.html
[root@test2 html]# cat index.html

在这里插入图片描述

基于客户端ip进行跳转 设置一个固定接口可以正常访问 其他ip都访问不了

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

         charset utf-8;

        #access_log  logs/host.access.log  main;
         set $rewrite true;
         if ( $remote_addr = "20.0.0.10" ) {
              set $rewrite false;
}
         if ( $rewrite = true ) {
              rewrite (.+) /error.html;
}
        location = /error.html {
           root html;
}

在这里插入图片描述

在这里插入图片描述

location 匹配的优先级

=

~

~*

/

重定向

permanent

redriect

lat 500的报错不一定都是客户端可能是配置文件的问题

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值