rewrite与location Nginx重写功能( 二 )

  • last :本条规则匹配完成后,继续向下匹配新的location URI规则,一般用在 server 和 if 中
  • break :本条规则匹配完成即终止 , 不再匹配后面的任何规则,一般使用在 location 中
  • redirect:返回302临时重定向 , 浏览器地址会显示跳转后的URL地址
  • permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址 。
  • 四、rewrite 示例4.1基于域名跳转4.1.1 基于域名跳转——操作步骤
    现在公司旧域名www.fzr.com有业务需求变更,需要使用新域名www.zzj.com代替,但是旧域名不能废除 , 需要跳转到新域名上 , 而且后面的参数保持不变 。
    vim /usr/local/nginx/conf/nginx.confserver {    listen       80;    server_name  www.fzr.com;                                        #域名修改    charset utf-8;    access_log  /var/log/nginx/www.fzr.com-access.log;     #日志修改    location / {                                                    #添加域名重定向        if ($host = 'www.fzr.com'){                                  #$host为rewrite全局变量,代表请求主机头字段或主机名            rewrite ^/(.*)$ http://www.zzj.com/$1 permanent;        #$1为正则匹配的内容,即域名后边的字符串        }        root   html;        index  index.html index.htm;    }}echo "192.168.10.10 www.fzr.com www.zzj.com" >> /etc/hostssystemctl restart nginx                 #重启服务浏览器输入模拟访问 http://www.fzr.com/test/index.html会跳转到www.zzj.com/test/index.html,查看元素可以看到返回301,实现了永久重定向跳转,而且域名后的参数也正常跳转4.1.2 实例操作:基于域名跳转
    (1)修改主配置文件
    rewrite与location Nginx重写功能

    文章插图

    rewrite与location Nginx重写功能

    文章插图
    (2)重启服务并添加映射关系
    rewrite与location Nginx重写功能

    文章插图

    rewrite与location Nginx重写功能

    文章插图
    (3)创建网页
    rewrite与location Nginx重写功能

    文章插图

    rewrite与location Nginx重写功能

    文章插图
    (4)浏览器中访问测试
    rewrite与location Nginx重写功能

    文章插图

    rewrite与location Nginx重写功能

    文章插图
    4.2基于客户端 IP 访问跳转4.2.1 基于客户端 IP 访问跳转的操作步骤
    要求:今天公司业务新版本上线,要求所有 IP 访问任何内容都显示一个固定维护页面,只有公司 IP:192.168.10.10访问正常
    vim /usr/local/nginx/conf/nginx.confserver {    listen       80;    server_name  www.fzr.com;        #域名修改    charset utf-8;    access_log  /var/log/nginx/www.fzr.com-access.log;       #日志修改    #设置是否合法的IP标记    set $rewrite true;                          #设置变量$rewrite,变量值为boole值true    #判断是否为合法IP    if ($remote_addr = "192.168.10.10"){       #当客户端IP为192.168.10.10时,将变量值设为false,不进行重写        set $rewrite false;    }    #除了合法IP,其它都是非法IP,进行重写跳转维护页面    if ($rewrite = true){                       #当变量值为true时 , 进行重写        rewrite (.+) /index.html;               #重写在访问IP后边插入/index.html,例如192.168.10.10/index.html    }    location = /index.html {        root /var/www/html;                     #网页返回/var/www/html/index.html的内容    }    location / {        root   html;        index  index.html index.htm;    }}mkdir -p /var/www/html/echo "<h1>正在维护</h1>" > /var/www/html/index.htmlsystemctl restart nginx

    推荐阅读