nginx的重定向(rewrite)

1、location 匹配

location匹配的就是后面的URL,对访问的路径做访问控制或者代理转发

共有三个匹配:精确匹配、正则匹配、一般配

a、精确匹配

格式:location=/ 对字符串进行完全匹配,必须完全合

c、正则匹配

^~:前缀匹配 以什么为开头,如果匹配成功,则不再匹配其它的正则匹配的location。

~:区分大小写的匹配

~*:不区分大小写

!~:区分大小写的区分

!~*:不匹配大小的取反

c、一般匹配(通用匹配)

location  /字符串

2、location 优先级以及原则

优先级:精确>正则>一般

优先级总结:

location= 最高,必须是完整路径

location= 1.jpg 每一位都需要一摸一样否则匹配不到

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

实际网站中的使用规则:

location= / {

root html;

index index.html index.htm index.php;

}

网站首页

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

location^~ /static /{

root/web/sataic/

index index.html index.htm;

}

用来匹配静态页面

location ~* \.(jpg.gif|png|jpeg|css)$ {

root /web/pirturs/;

idnex index.html index.tml;

}

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

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

location / {

proxy_pass

}

转发后端请求和负载均衡

3、rewrite重定向

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

rewrite工作方式,通过nginx的全局变量或者是自定义变量,结合正则表达式和标志位实现url的重定向,对访问的域名或者域名内的URL路径地址重写。

4、rewrite 和 location区别

从功能看 rewrite 和 location都能实现跳转,主要区别在于 rewrite 是在同一域名内更改获取资源的路径,而 location 是对一类路径做控制访问或反向代理,还可以proxy_pass 到其他机器。

5、nginx的变量

$url 客户端另外的url地址

$host 请求的主机名

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

$http_referer:请求头的fefrr的信息模式当前页面来源的url

$remote_addr 客户端的IP地址

$remote_port 客户端的端口

$server_port 服务端的端口号

$server_addr 服务端的ip地址

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

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

x_forward_for :用来获取请求头当中客户端的真实ip地址,代理服务器添加,在代理服务器中指示客户端的ip地址

X-Real-IP: 客户端真实的ip地址

6、标志位

flag:(四种)

permanen 永久重定向。返回码是301 浏览器地址会显示跳转后的url地址 (方便搜索引擎可以被搜索到)

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

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

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

7、rewrite的执行顺序

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

2、匹配location的规则

3、执行选定的location规则

8、rewrite的语法

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

在重定向的过程中使用last方式进行重定向,但是没有结束语,陷入了死循环,nginx会自动循环10次

last最多只能执行10次,超过10次没有结束就会停止,然后保存500

将结束语last改成break避免死循环

9、实验 基于域名进行跳转,老的不用了,但是依然可以访问,统统跳转到新的域名

宿主机 :192.168.10.20 域名www.xy102.com

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

 在/etc/hosts目录下进行本地映射

在虚拟机自带的浏览器对域名www.xy102.com进行访问,域名跳转到www.zlm.com只域名跳转,内容不变   

 10、实验:基于ip进行跳转,公司有新业务上线,测试阶段,其他的ip只能显示维护中,只有本机能正常访问

设置一个变量名,变量名rewrite值是true,接下来判断ip是否合法,true进行跳转,如果是false跳转到错误页面

   set $rewrite true;
           if ( $remote_addr = "192.168.10.20" ){
        set $rewrite false;
}
        if ( $rewrite = true ){
        rewrite (.+) /error.html;
}
        location = /error.html {
        root html;
        index index.html;
}

error.html的内容 

 

使用宿主机192.168.10.20对192.168.10.20进行访问  

 

使用192.168.10.30对192.168.10.20进行访问  

  • 17
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nginx定向的配置可以通过使用server块和location块来实现。以下是几种常见的nginx定向配置方法: 1. 将一个URL定向到另一个URL: ``` server { listen 80; server_name localhost; location /abc { rewrite ^/abc/a/1.html$ http://localhost/ccc/bbb/2.html permanent; } } ``` 这会将从"http://localhost/abc/a/1.html"请求定向到"http://localhost/ccc/bbb/2.html"。 2. 将请求访问脚本定向到错误页面: ``` server { listen 80; server_name localhost; location ~* \.sh$ { return 403; } } ``` 这会将以".sh"结尾的请求定向到403错误页面。 3. 将HTTP定向到HTTPS: 方法一: ``` server { listen 80; server_name localhost; location / { return 301 https://localhost; } } ``` 这会将所有的HTTP请求定向到HTTPS的"https://localhost"。 方法二: ``` server { listen 80; server_name localhost; location / { rewrite (.*) https://localhost permanent; } } ``` 这也会将所有的HTTP请求定向到HTTPS的"https://localhost"。 请根据你的需求选择适合的配置方法,并在nginx的配置文件中进行相应的修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Nginx定向配置](https://blog.csdn.net/qq_38472635/article/details/106791874)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值