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

    推薦閱讀