1. 程式人生 > >nginx 重寫

nginx 重寫

error_log lis span break edi 接收 forbidden 變量 地址

rewrite指令可在 server 塊或者 location 塊中配置。

語法:

rewrite regex replacement [flag];

1、rewrite 接收的 uri 不包含 host 地址,不包含參數。可通過全局變量$uri、$args獲取。

2、flag:last、break、redirect、permannet

  last:中止在本location塊中處理接收到的URI,並將此處重寫的URI作為一個新的URI,使用其他 location 塊進行處理。讓所有的location塊重新匹配和處理新的URI。

  break:將重寫後的URI作為一個新的URI,在本塊中繼續進行處理。將重寫後的地址在當前的location塊中執行,不會將新的URI轉向到其他location塊。新的URI始終在同一個location塊中。

  redirect:302臨時重定向。

  permanent:301永久重定向。

3、rewrite_log

  rewrite_log on; 開啟URL重寫日誌。以 notice 級別輸出到 error_log指令配置的日誌文件中。

通過重寫防盜鏈:

 1 server{
 2     listen 80;
 3     server_name www.test.com;
 4     location ~* ^.+\.(gif|jpg|png)${
 5          valid_referers none blocked server_name *.test.com;
 6
if($invalid_referer){ 7 rewrite ^/ http://www.test.com/images/forbidden.png; 8 } 9 } 10 }

valid_referer指令設置有效的 referer,若referer有效則設置$invalid_referer為1,否則為0;

none表示沒有referer;

blocked表示referer被防火墻或者代理服務器刪除或偽裝;

server_names設置一個或多個URL。

nginx 重寫