nginx 內(nèi)置變量詳解及隔離進(jìn)行簡(jiǎn)單的攔截
1,nginx內(nèi)置變量
nginx 有很多內(nèi)置變量可以進(jìn)行簡(jiǎn)單的過(guò)濾。
$arg_name 請(qǐng)求行中的name參數(shù)。 $args 請(qǐng)求行中參數(shù)字符串。 $cookie_name 名為name的cookie。 與$uri相同。 $http_name 任意請(qǐng)求頭的值;變量名的后半部為轉(zhuǎn)化為小寫(xiě)并且用下劃線(xiàn)替代橫線(xiàn)后的請(qǐng)求頭名稱(chēng)。 $host “Host”請(qǐng)求頭的值,如果沒(méi)有該請(qǐng)求頭,則為與請(qǐng)求對(duì)應(yīng)的虛擬主機(jī)的首要主機(jī)名。 $query_string 與$args相同。 $realpath_root 按root指令或alias指令算出的當(dāng)前請(qǐng)求的絕對(duì)路徑。其中的符號(hào)鏈接都會(huì)解析成真是文件路徑。 $remote_addr 客戶(hù)端IP地址。 $remote_port 客戶(hù)端端口。 $remote_user 為基本用戶(hù)認(rèn)證提供的用戶(hù)名。 $request 完整的原始請(qǐng)求行。 $request_body 請(qǐng)求正文。在由proxy_pass指令和 fastcgi_pass指令處理的路徑中, 這個(gè)變量值可用。 $request_body_file 請(qǐng)求正文的臨時(shí)文件名。處理完成時(shí),臨時(shí)文件將被刪除。 如果希望總是將請(qǐng)求正文寫(xiě)入文件,需要開(kāi)啟client_body_in_file_only。 如果在被代理的請(qǐng)求或FastCGI請(qǐng)求中傳遞臨時(shí)文件名,就應(yīng)該禁止傳遞請(qǐng)求正文本身。 使用proxy_pass_request_body off指令 和fastcgi_pass_request_body off指令 分別禁止在代理和FastCGI中傳遞請(qǐng)求正文。 $request_completion 請(qǐng)求完成時(shí)返回“OK”,否則返回空字符串。 $request_filename 基于root指令或alias指令,以及請(qǐng)求URI,得到的當(dāng)前請(qǐng)求的文件路徑。 $request_method HTTP方法,通常為“GET”或者“POST”。 $request_time 請(qǐng)求處理的時(shí)間,單位為秒,精度是毫秒(1.3.9, 1.2.6);請(qǐng)求處理時(shí)間從由客戶(hù)端接收到第一個(gè)字節(jié)開(kāi)始計(jì)算。 $request_uri 完整的原始請(qǐng)求行(帶參數(shù))。 $scheme 請(qǐng)求協(xié)議類(lèi)型,為“http”或“https”。 $status 響應(yīng)狀態(tài)碼。 $tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd, $tcpinfo_rcv_space 客戶(hù)端TCP連接的信息,在支持套接字選項(xiàng)TCP_INFO的系統(tǒng)中可用。 $uri 當(dāng)前請(qǐng)求規(guī)范化以后的URI。變量$uri的值可能隨請(qǐng)求的處理過(guò)程而改變。 比如,當(dāng)進(jìn)行內(nèi)部跳轉(zhuǎn)時(shí),或者使用默認(rèn)頁(yè)文件
特別需要注意的幾個(gè):
$arg_name 請(qǐng)求行中的name參數(shù)。 $http_name 任意請(qǐng)求頭的值;變量名的后半部為轉(zhuǎn)化為小寫(xiě)并且用下劃線(xiàn)替代橫線(xiàn)后的請(qǐng)求頭名稱(chēng)。 $cookie_name 名為name的cookie
這個(gè)幾個(gè)都是變量其中的name是具體的參數(shù)名稱(chēng)。
設(shè)計(jì)的特別精巧,和lua的類(lèi)似。具體進(jìn)行參數(shù)攔截就這樣直接寫(xiě)了。
2,攔截head中token
比如在做移動(dòng)客戶(hù)端開(kāi)發(fā)的時(shí)候,timestamp,token,sign,uuid參數(shù)
這個(gè)4個(gè)參數(shù)都是必須加上的。增加防刷的安全性。
token是客戶(hù)端登錄token。sign是請(qǐng)求數(shù)據(jù)簽名。
防止別人拿到url然后刷登錄接口。
最后一個(gè)是uuid,設(shè)備號(hào),也能起到一定的防護(hù)作用。
禁用一個(gè)header頭里面的uuid為Android-uuid-1122998800。注意這里是$http_uuid 后面的uuid 是header頭里面的參數(shù)。
if ($http_uuid ~ 'android-uuid-1122998800') { return 403 "Error uuid forbidden."; }
進(jìn)行ip攔截。如果發(fā)現(xiàn)有ip攻擊直接禁用掉。
if ($remote_addr ~ '10.198.2.2') { return 403 "Error uuid forbidden."; }
禁用攻擊日志。這部分日志會(huì)影響數(shù)據(jù)處理,直接禁用掉。
access_log off;
4,總結(jié)
可以禁用跳轉(zhuǎn),處理,其中里面有常用的內(nèi)置變量。
可以根據(jù)自己的業(yè)務(wù)邏輯組織下。提供系統(tǒng)穩(wěn)定性。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
nginx里的rewrite跳轉(zhuǎn)的實(shí)現(xiàn)
這篇文章主要介紹了nginx里的rewrite跳轉(zhuǎn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11使用Nginx搭建代理服務(wù)器(正向代理HTTPS網(wǎng)站)的操作指南
在網(wǎng)絡(luò)應(yīng)用中,代理服務(wù)器是用于中轉(zhuǎn)用戶(hù)請(qǐng)求和服務(wù)端響應(yīng)的工具,正向代理主要用于客戶(hù)端與外部服務(wù)器之間的訪(fǎng)問(wèn)代理,幫助客戶(hù)端隱藏其 IP 地址或訪(fǎng)問(wèn)受限資源,本文將詳細(xì)介紹如何使用 Nginx 搭建正向代理服務(wù)器,特別是針對(duì) HTTPS 網(wǎng)站的代理2024-11-11nginx無(wú)法獲取帶下劃線(xiàn)的header值的問(wèn)題解決
Nginx默認(rèn)會(huì)將連字符轉(zhuǎn)換為下劃線(xiàn),這可能會(huì)導(dǎo)致無(wú)法正確獲取到原始的請(qǐng)求頭值,本文主要介紹了nginx無(wú)法獲取帶下劃線(xiàn)的header值的問(wèn)題解決,感興趣的可以了解一下2024-12-12nginx如何實(shí)現(xiàn)配置靜態(tài)資源服務(wù)器及防盜鏈
這篇文章主要為大家介紹了nginx實(shí)現(xiàn)配置靜態(tài)資源服務(wù)器及防盜鏈步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11Nginx之upstream被動(dòng)式重試機(jī)制的實(shí)現(xiàn)
本文主要介紹了Nginx之upstream被動(dòng)式重試機(jī)制的實(shí)現(xiàn),可以通過(guò)proxy_next_upstream來(lái)自定義配置,具有一定的參考價(jià)值,感興趣的可以了解一下2025-03-03Nginx報(bào)錯(cuò)host not found in upstream的解決辦法
本文主要介紹了Nginx報(bào)錯(cuò)host not found in upstream的解決辦法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08