nginx之rewrite

1.rewrite的應用場景

1.URL訪問跳轉,支持開發設計頁面跳轉,兼容性支持,展現效果等
2.SEO優化
3.維護
4.安全nginx

語法:rewrite regex replacement flag;,如:正則表達式

rewrite ^/images/(.*\.jpg)$ /imgs/$1 break;
rewrite ^/bbs/(.*)$ http://www.idfsoft.com/index.html redirect;
[root@khd~]#vim/usr/local/nginx/conf/nginx.conf
location / {
            root   html;
            index  index.html index.htm;
        }
        location /status {
            stub_status on;
            allow all;
        }
        location /lcr{
        root html;
        rewrite ^/lcr/(.*\.PNG)$ /ly/$1 break;

驗證
imagevim

1.2 圖片換位置指定所放位置

location /lcr {
        root html;
        rewrite ^/lcr/(.*\.PNG)$ /ly/$1 break;
        }

       location /ly {
       root  /var/www/html;
       }
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #

驗證
image安全

1.3 break 指定網絡位置

location /lcr {
        root html;
        rewrite ^/lcr/(.*\.PNG)$ http://chuantu.xyz/t6/702/1560238118x992245975.jpg break;
        }

       location /ly {
       root  /var/www/html;
       }

驗證
網絡

1.4 location直接指定放的位置

location /status {
            stub_status on;
            allow all;
        }
        location /lcr {
        root /var/www/html;
        rewrite ^/lcr/(.*\.PNG)$ /ly/$1 break;
        }

驗證
image優化

1.5 break 的使用

location /status {
            stub_status on;
            allow all;
        }
        location /lcr {
        root /var/www/html;
        rewrite ^/lcr/(.*\.PNG)$ /ly/$1 break;
        rewrite ^/ly/(.*\.PNG)$ /cwh/$1 break;
        }
[root@khd ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@khd ~]# nginx -s reload

驗證
image搜索引擎

1.6 break和last結合用法

location /lcr {
        root /var/www/html;
        rewrite ^/lcr/(.*\.PNG)$ /ly/$1 last;
        rewrite ^/ly/(.*\.PNG)$ /cwh/$1 break;
        }

        location /ly {
        root /var/www/html;
        }
root@khd ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@khd ~]# nginx -s reload

驗證
imageurl

1.7break和last的第二種用法

[root@khd ~]# cd /var/www/html/
[root@khd html]# ls
ly
[root@khd html]# mv ly cwh
[root@khd html]# ls
cwh
[root@khd html]# cd
[root@khd ~]# vim /usr/local/nginx/conf/nginx.conf
[root@khd ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@khd ~]# nginx -s reload
location /lcr {
        root /var/www/html;
        rewrite ^/lcr/(.*\.PNG)$ /ly/$1 last;
        }

        location /ly {
        root /var/www/html;
        rewrite ^/ly/(.*\.PNG)$ /cwh/$1 break;
        }

驗證
image設計

常見的flag

--- ---
flag 做用
last 基本上都用這個flag,表示當前的匹配結束,繼續下一個匹配,最多匹配10個到20個
一旦此rewrite規則重寫完成後,就再也不被後面其它的rewrite規則進行處理
而是由UserAgent從新對重寫後的URL再一次發起請求,並從頭開始執行相似的過程
break 停止Rewrite,再也不繼續匹配
一旦此rewrite規則重寫完成後,由UserAgent對新的URL從新發起請求,且再也不會被當前location內的任何rewrite規則所檢查
redirect 以臨時重定向的HTTP狀態302返回新的URL
permanent 以永久重定向的HTTP狀態301返回新的URL

rewrite模塊的做用是用來執行URL重定向。這個機制有利於去掉惡意訪問的url,也有利於搜索引擎優化(SEO)

nginx使用的語法源於Perl兼容正則表達式(PCRE)庫,基本語法以下:

--- ---
標識符 意義
^ 必須以^後的實體開頭
$ 必須以$前的實體結尾
. 匹配任意字符
| 匹配
[] 匹配指定字符集內的任意字符
[^] 匹配任何不包括在指定字符集內的任意字符串
() 分組,組成一組用於匹配的實體,一般會有 | 來協助

捕獲子表達式,能夠捕獲放在()之間的任何文本,好比:

^(hello|sir)$       //字符串爲「hi sir」捕獲的結果:$1=hi$2=sir

//這些被捕獲的數據,在後面就能夠當變量同樣使用了
相關文章
相關標籤/搜索