Nginx Location 指令基礎

Nginx 中的 Location 指令NginxHttpCoreModule中重要指令。Location 指令比較簡單,但倒是配置 Nginx 過程當中不得不去了解的。 php

Location 指令,是用來爲匹配的 URI 進行配置,URI 即語法中的"/uri/",能夠是字符串或正則表達式。但若是要使用正則表達式,則必須指定前綴。html

1、基本語法

  
  
  
  
  1. location [=|~|~*|^~|@] /uri/ { … } 
〖=〗 表示精確匹配,若是找到,當即中止搜索並當即處理此請求。
〖~ 〗 表示區分大小寫匹配
〖~*〗 表示不區分大小寫匹配
〖^~ 〗 表示只匹配字符串,不查詢正則表達式。
〖@〗 指定一個命名的location,通常只用於內部重定向請求。

2、匹配過程

首先對字符串進行匹配查詢,最確切的匹配將被使用。而後,正則表達式的匹配查詢開始,匹配第一個結果後會中止搜索,若是沒有找到正則表達式,將使用字符串的搜索結果,若是字符串和正則都匹配,那麼正則優先級較高。nginx

3、配置實例

  
  
  
  
  1. location  = / {  
  2.   # 只匹配對 / 目錄的查詢.  
  3.   [ config A ]  
  4. }  
  5. location  / {  
  6.   # 匹配以 / 開始的查詢,即全部查詢都匹配。  
  7.   [ config B ]  
  8. }  
  9. location ^~ /p_w_picpaths/ {  
  10.   # 匹配以 /p_w_picpaths/ 開始的查詢,再也不檢查正則表達式。  
  11.   [ config C ]  
  12. }  
  13. location ~* \.(gif|jpg|jpeg)$ {  
  14.   # 匹配以gif, jpg, or jpeg結尾的文件,但優先級低於config C。  
  15.   [ config D ]  
4、全局變量

$args #這個變量等於請求行中的參數。
$content_length #請求頭中的Content-length字段。
$content_type #請求頭中的Content-Type字段。
$document_root #當前請求在root指令中指定的值。
$host #請求主機頭字段,不然爲服務器名稱。
$http_user_agent #客戶端agent信息
$http_cookie #客戶端cookie信息
$limit_rate #這個變量能夠限制鏈接速率。
$request_body_file #客戶端請求主體信息的臨時文件名。
$request_method #客戶端請求的動做,一般爲GET或POST。
$remote_addr #客戶端的IP地址。
$remote_port #客戶端的端口。
$remote_user #已經通過Auth Basic Module驗證的用戶名。
$request_filename #當前請求的文件路徑,由root或alias指令與URI請求生成。
$query_string #與$args相同。
$scheme #HTTP方法(如http,https)。
$server_protocol #請求使用的協議,一般是HTTP/1.0或HTTP/1.1。
$server_addr #服務器地址,在完成一次系統調用後能夠肯定這個值。
$server_name #服務器名稱。
$server_port #請求到達服務器的端口號。
$request_uri #包含請求參數的原始URI,不包含主機名,如:」/foo/bar.php?arg=baz」。
$uri #不帶請求參數的當前URI,$uri不包含主機名,如」/foo/bar.html」。
$document_uri #與$uri相同。正則表達式

參考資料:sql

一、HttpCoreModule服務器

相關文章
相關標籤/搜索