nginx內建變數

2021-08-01 22:01:51 字數 2049 閱讀 4776

nginx作為乙個成熟、久經考驗的負載均衡軟體,與其提供豐富、完整的內建變數是分不開的,它極大增加了對nginx網路行為的控制細度。這些變數大部分都是在請求進入時解析的,並把他們快取到請求cycle中,方便下一次獲取使用。首先來看看nginx對都開放了那些api

參看下表:

名稱說明

$arg_name

請求中的name引數

$args

請求中的引數

$binary_remote_addr

遠端位址的二進位制表示

$body_bytes_sent

已傳送的訊息體位元組數

$content_length

http請求資訊裡的"content-length"

$content_type

請求資訊裡的"content-type"

$document_root

針對當前請求的根路徑設定值

$document_uri

與$uri相同; 比如 /test2/test.php

$host

請求資訊中的"host",如果請求中沒有host行,則等於設定的伺服器名

$hostname

機器名使用 gethostname系統呼叫的值

cookie 資訊

引用位址

客戶端**資訊

最後乙個訪問伺服器的ip位址。

相當於網路訪問路徑

$is_args

如果請求行帶有引數,返回「?」,否則返回空字串

$limit_rate

對連線速率的限制

$nginx_version

當前執行的nginx版本號

$pid

worker程序的pid

$query_string

與$args相同

$realpath_root

按root指令或alias指令算出的當前請求的絕對路徑。其中的符號鏈結都會解析成真是檔案路徑

$remote_addr

客戶端ip位址

$remote_port

客戶端埠號

$remote_user

客戶端使用者名稱,認證用

$request

使用者請求

$request_body

這個變數(0.7.58+)包含請求的主要資訊。在使用proxy_pass或fastcgi_pass指令的location中比較有意義

$request_body_file

客戶端請求主體資訊的臨時檔名

$request_completion

如果請求成功,設為"ok";如果請求未完成或者不是一系列請求中最後一部分則設為空

$request_filename

當前請求的檔案路徑名,比如/opt/nginx/www/test.php

$request_method

請求的方法,比如"get"、"post"等

$request_uri

請求的uri,帶引數

$scheme

所用的協議,比如http或者是https

$server_addr

伺服器位址,如果沒有用listen指明伺服器位址,使用這個變數將發起一次系統呼叫以取得位址(造成資源浪費)

$server_name

請求到達的伺服器名

$server_port

請求到達的伺服器端口號

$server_protocol

請求的協議版本,"http/1.0"或"http/1.1"

$uri

請求的uri,可能和最初的值有不同,比如經過重定向之類的

其實這還不是全部,nginx在不停迭代更新是乙個原因,還有乙個是有些變數太冷門,借助它們,會有很多玩法。

nginx 內建變數

在配置基於nginx伺服器的 時,必然會用到 nginx內建變數 下面筆者將它整理成列表,把最新版本的變數列出來,以方便做配置時查詢 nginx內建變數 內建變數存放在 ngx http core module 模組中,變數的命名方式和apache 伺服器變數是一致的。總而言之,這些變數代表著客戶端...

nginx內建變數

變數名 定義 arg parameter get請求中變數名parameter引數的值。args 這個變數等於get請求中的引數。例如,foo 123 bar blahblah 這個變數只可以被修改 binary remote addr 二進位製碼形式的客戶端位址。body bytes sent 傳...

nginx內建變數

今天在整理nginx的rewrite規則,發現遇到許多關於nginx內建變數的判斷,所以此處將nginx的內建變數溫習一遍 nginx支援的所有內建變數 arg name 請求中的的引數名,即 後面的arg name arg value形式的arg name args 請求中的引數值 binary ...