【Lua】Nginx 變量
使用Ng變量
要在OpenResty中引用Nginx變量,可以使用 ngx . var . VARIABLE,要將變量從字符串轉換為數字,可以使用 tonumber函數。
-- 黑名单
local black_ips = {["127.0.0.1"]=true}
-- 当前客户端IP
local ip = ngx.var.remote_addr
if true == black_ips[ip] then
-- 返回相应的HTTP状态码
ngx.exit(ngx.HTTP_FORBIDDEN)
end
經常用到的Ng變量如下表:
變量 | 說明 | ||
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系統調用的值 | ||
http_cookie | Cookie信息 | ||
http_referer | 引用地址 | ||
http_user_agent | 客戶端代理信息 | ||
http_via | 最後一個訪問服務器的Ip地址。 | ||
http_x_forwarded_for | 相當於網絡訪問路徑 | ||
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,可能和最初的值有不同,比如經過重定向之類的 |