Rewrite 是一種服務器的重寫脈衝技術,它可使得服務器能夠支持 URL 重寫,是一種最新流行的服務器技術。它還能夠實現限制特定IP訪問網站的功能。不少狀況下,某個 IP 的訪問很容易形成 CPU 100% (好比 某些搜索引擎的固定抓取,別人大量的採集站點),這個時候咱們就要利用一些有效的手段封掉對方的 IP,讓他沒法消耗服務器的資源,封 IP 的方法有不少種,若是你的 Web(Nginx|Apache|other) 服務器安裝了 Rewrite 模塊的話,也能夠試試利用 Rewrite 規則封掉對方的 IP。php
最近工做中遇到這樣一件事,有一個webserveice 從JAVA轉變成PHP,程序面的緣由致使接口的名字變了,這裏就須要使用僞靜態讓請求接口的請求能正常處理,首先先看下rewrite的指令:html
1、set: 用於設置變量 2、if: if用於判斷一些在rewrite語句中沒法直接匹配的條件,如檢測文件是否存在以及http、header、cookie ###當if表達式中的條件爲true,則執行if塊中的語句### ###當表達式只是一個變量時,若是值爲空或者任何以0開頭的字符串都會看成false### ###直接比較內容時,使用 = 和 !=### 正則規則: ~ #區分大小寫字母的匹配# ~* #不區分大小寫的匹配# !~ #! 等同 find ! -name "True",表示不匹配# !~* #同上# -f 判斷文件存在 -d 判斷目錄存在 -e 判斷文件,目錄或者符號連接存在 -x 判斷文件可執行 Example: ###若是User-Agent包含MSIE 則rewrite到/msie/目錄### if ($http_user_agent ~ MSIE) { rewrite ^(.*)$ /msie/$1 break; } ###若是文件名不存在,返回444(沒人會這麼用哦) if (!-e $request_filename) { return 444; ###常規作法都會rewrite 到指定頁面### }
關於return指令python
語法: 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
###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: ###Rewrite Rules### rewrite /test.php /last.php last; rewrite /301.php /permanent.php permanent; [root@Nginx-one www.ipython.me]# curl -I 1.1.1.10/test.php HTTP/1.1 200 OK Server: nginx/1.6.0 Date: Sun, 07 Sep 2014 01:05:32 GMT Content-Type: text/html Connection: keep-alive Vary: Accept-Encoding X-Powered-By: PHP/5.5.13 [root@Nginx-one www.ipython.me]# curl -I 1.1.1.10/301.php HTTP/1.1 301 Moved Permanently Server: nginx/1.6.0 Date: Sun, 07 Sep 2014 01:05:35 GMT Content-Type: text/html Content-Length: 184 Location: http://1.1.1.10/permanent.php Connection: keep-alive
rewrite 可使用的全局變量(含義傳送門)web
$args $content_length $content_type $document_root $document_uri $host $http_user_agent $http_cookie $limit_rate $request_body_file $request_method $remote_addr $remote_port $remote_user $request_filename $request_uri $query_string $scheme $server_protocol $server_addr $server_name $server_port $uri
» 轉載保留版權: IT辰逸 » 《記錄Nginx Rewrite規則》» 本文版權採起: BY-NC-SA 協議進行受權,轉載註明出處。除IT-Tools、News以及特別標註,本站全部文章均爲原創。» 若是喜歡能夠: 點此訂閱本站