国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

linux中Nginx Rewrite規則工作筆記

2024-08-27 23:58:34
字體:
來源:轉載
供稿:網友

Rewrite是一種服務器的重寫脈沖技術,它可以使得服務器可以支持 URL 重寫,是一種流行的服務器技術。它還可以實現限制特定IP訪問網站的功能,很多情況下,某個 IP 的訪問很容易造成 CPU 100%,比如 某些搜索引擎的固定抓取,別人大量的采集站點,這個時候我們就要利用一些有效的手段封掉對方的 IP,讓他無法消耗服務器的資源,封 IP 的方法有很多種,如果你的 Web(Nginx|Apache|other,服務器安裝了 Rewrite 模塊的話,也可以試試利用 Rewrite 規則封掉對方的 IP.

最近工作中遇到這樣一件事,有一個webserveice 從JAVA轉變成PHP,程序面的原因導致接口的名字變了,這里就需要使用偽靜態讓請求接口的請求能正常處理,首先先看下rewrite的指令:

1、set:用于設置變量

2、if:if用于判斷一些在rewrite語句中無法直接匹配的條件,如檢測文件是否存在以及http、header、cookie.

###當if表達式中的條件為true,則執行if塊中的語句###.

###當表達式只是一個變量時,如果值為空或者任何以0開頭的字符串都會當作false###

###直接比較內容時,使用 = 和 !=###.

正則規則:

~    #區分大小寫字母的匹配#

~*   #不區分大小寫的匹配#

!~   #! 等同 find ! -name "True",表示不匹配#

!~*  #同上#

-f 判斷文件存在

-d 判斷目錄存在

-e 判斷文件,目錄或者符號鏈接存在

-x 判斷文件可執行

Example:

  1. ###如果User-Agent包含MSIE 則rewrite到/msie/目錄### 
  2. if ($http_user_agent ~ MSIE) { 
  3.     rewrite  ^(.*)$  /msie/$1  break
  4. ###如果文件名不存在,返回444(沒人會這么用哦) 
  5. if (!-e $request_filename) { 
  6.     return 444; 
  7.     ###常規做法都會rewrite 到指定頁面### 

關于return指令

語法:return code

作用域:server,location,if

參考:1xx(臨時響應)

表示臨時響應并需要請求者繼續執行操作的狀態代碼.

代碼   說明

100(繼續)請求者應當繼續提出請求,服務器返回此代碼表示已收到請求的第一部分,正在等待其余部分.

101(切換協議)請求者已要求服務器切換協議,服務器已確認并準備切換.

2xx(成功),表示成功處理了請求的狀態代碼.

代碼   說明

200   (成功)  服務器已成功處理了請求,通常,這表示服務器提供了請求的網頁.

201   (已創建)  請求成功并且服務器創建了新的資源.

202   (已接受)  服務器已接受請求,但尚未處理.

203   (非授權信息)服務器已成功處理了請求,但返回的信息可能來自另一來源.

204   (無內容)  服務器成功處理了請求,但沒有返回任何內容.

205   (重置內容) 服務器成功處理了請求,但沒有返回任何內容.

206   (部分內容)  服務器成功處理了部分 GET 請求.

3xx (重定向)

表示要完成請求,需要進一步操作,通常,這些狀態代碼用來重定向.

代碼   說明

300   (多種選擇)  針對請求,服務器可執行多種操作。 服務器可根據請求者 (user agent) 選擇一項操作,或提供操作列表供請求者選擇。

301   (永久移動)  請求的網頁已永久移動到新位置。 服務器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。

302   (臨時移動)  服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以后的請求。

303   (查看其他位置) 請求者應當對不同的位置使用單獨的 GET 請求來檢索響應時,服務器返回此代碼.

304   (未修改) 自從上次請求后,請求的網頁未修改過,服務器返回此響應時,不會返回網頁內容。

305   (使用代理) 請求者只能使用代理訪問請求的網頁,如果服務器返回此響應,還表示請求者應使用代理。

307   (臨時重定向)  服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以后的請求。

4xx(請求錯誤)

這些狀態代碼表示請求可能出錯,妨礙了服務器的處理.

代碼   說明

400   (錯誤請求) 服務器不理解請求的語法。

401   (未授權) 請求要求身份驗證,對于需要登錄的網頁,服務器可能返回此響應.

403   (禁止) 服務器拒絕請求。

404   (未找到) 服務器找不到請求的網頁。

405   (方法禁用) 禁用請求中指定的方法。

406   (不接受) 無法使用請求的內容特性響應請求的網頁。

407   (需要代理授權(此狀態代碼與 401(未授權)類似,但指定請求者應當授權使用代理。

408   (請求超時)服務器等候請求時發生超時.

409   (沖突)  服務器在完成請求時發生沖突,服務器必須在響應中包含有關沖突的信息.

410   (已刪除)如果請求的資源已永久刪除,服務器就會返回此響應。

411   (需要有效長度) 服務器不接受不含有效內容長度標頭字段的請求。

412   (未滿足前提條件) 服務器未滿足請求者在請求中設置的其中一個前提條件。

413   (請求實體過大) 服務器無法處理請求,因為請求實體過大,超出服務器的處理能力。

414   (請求的 URI 過長) 請求的 URI(通常為網址)過長,服務器無法處理。

415   (不支持的媒體類型) 請求的格式不受請求頁面的支持。

416   (請求范圍不符合要求) 如果頁面無法提供請求的范圍,則服務器會返回此狀態代碼.

417   (未滿足期望值)服務器未滿足"期望"請求標頭字段的要求.

444   (非標準HTTP狀態碼)以不發送任何Header頭的方式結束連接.

5xx(服務器錯誤)

這些狀態代碼表示服務器在嘗試處理請求時發生內部錯誤,這些錯誤可能是服務器本身的錯誤,而不是請求出錯.

代碼   說明

500   (服務器內部錯誤)  服務器遇到錯誤,無法完成請求。

501   (尚未實施) 服務器不具備完成請求的功能。 例如,服務器無法識別請求方法時可能會返回此代碼。

502   (錯誤網關) 服務器作為網關或代理,從上游服務器收到無效響應.

503   (服務不可用) 服務器目前無法使用,由于超載或停機維護,通常,這只是暫時狀態。

504   (網關超時)  服務器作為網關或代理,但是沒有及時從上游服務器收到請求。

505   (HTTP 版本不受支持) 服務器不支持請求中所用的 HTTP 協議版本。

rewrite 標志位:

###Nginx URL rewrite后仍會進行rewrite檢查,最多重試10次,如果10次仍未終止則會返回HTTP CODE 500###

break:停止rewrite檢測,也就是說當含有break flag的rewrite語句被執行時,該語句就是rewrite的最終結果

last:停止rewrite檢測,但是跟break有本質的不同,last的語句不一定是最終結果,這點后面會跟nginx的location匹配一起提到

redirect:返回302臨時重定向,一般用于重定向到完整的URL(包含http:部分)

permanent:返回301永久重定向,一般用于重定向到完整的URL(包含http:部分)

Example:

  1.     ###Rewrite Rules### 
  2.     rewrite /test.php /last.php last
  3.     rewrite /301.php /permanent.php permanent; 
  4. [root@Nginx-one m.survivalescaperooms.com]# curl -I 1.1.1.10/test.php 
  5. HTTP/1.1 200 OK 
  6. Server: nginx/1.6.0 
  7. Date: Sun, 07 Sep 2014 01:05:32 GMT 
  8. Content-Type: text/html 
  9. Connection: keep-alive 
  10. Vary: Accept-Encoding 
  11. X-Powered-By: PHP/5.5.13 
  12. [root@Nginx-one m.survivalescaperooms.com]# curl -I 1.1.1.10/301.php 
  13. HTTP/1.1 301 Moved Permanently 
  14. Server: nginx/1.6.0 
  15. Date: Sun, 07 Sep 2014 01:05:35 GMT 
  16. Content-Type: text/html 
  17. Content-Length: 184 
  18. Location: http://1.1.1.10/permanent.php 
  19. Connection: keep-alive

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 岳普湖县| 敦煌市| 海原县| 和平区| 丰原市| 高邮市| 弥渡县| 高陵县| 苏尼特右旗| 塘沽区| 巴彦淖尔市| 襄垣县| 梁山县| 始兴县| 伊宁县| 红桥区| 武胜县| 仁布县| 旬阳县| 清徐县| 南投市| 莱州市| 锡林郭勒盟| 亚东县| 石家庄市| 蛟河市| 三台县| 彩票| 双峰县| 勃利县| 安宁市| 饶平县| 山阳县| 永泰县| 东源县| 德安县| 化德县| 江川县| 西吉县| 佳木斯市| 乐亭县|