nginx实践:rewrite规则

Rewrite规则

作用:rewrite规则可以实现对url的重写和重定向

主要应用场景:

  • URL访问跳转,支持开发设计,如页面跳转,兼容性支持,展示效果
  • SEO优化
  • 维护:后台维护、流量转发
  • 安全

配置语法

配置: rewrite regex replacement [flag];

作用域:server、location、if

参数:

last 停止rewrite检测【如果没有匹配到,会继续向下匹配】

break 停止rewrite检测【如果没有匹配到,则不再向下匹配,直接返回结果404】

redirect 返回302临时重定向,地址栏会显示跳转后的地址

permanent 返回301永久重定向,地址栏会显示跳转后的地址

配置示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
server {
    listen 80;
    server_name localhost;

    access_log  /var/log/nginx/log/host.access.log  main;
     
    root /opt/app/code; 
    location ~ ^/break {
        rewrite ^/break /test/ break;
    } 
 
    location ~ ^/last {
         rewrite ^/last /test/ last;
         #rewrite ^/last /test/ redirect;
    }    

    location ~ ^/site {
         rewrite ^/main http://www.baidu.com/ permanent;
         #rewrite ^/main http://www.baidu.com/ redirect;
    }    
 
    location /test/ {
       default_type application/json;
       return 200 '{"status":"success"}';
    }
}

redirect 表示临时的重定向 ,只要后端服务是开者的。每次访问 /site都会重定向到后面的url

permanent 表示永久重定向,第一次访问成功后,把后端服务关闭后,访问/site仍然会重定向到后面的url

rewrite优先级规则

  • 执行server 块的rewrite 指令。将所有的网站都重定向同一个网站。
  • 执行location匹配。
  • 执行选定的location中的rewrite。
Licensed under CC BY-NC-SA 4.0