nginx打印請求頭日志方法(親測可用)
一、前言
之前想用nginx打印收到的請求的請求頭,但是只找到打印請求體的,沒有打印請求頭的,感覺原版nginx不支持。
建議如果想打印請求頭,先換成openresty
(本人安裝的是openresty-1.21.4.1.tar.gz版本的)
網(wǎng)上有些文章的配置,本人試了后發(fā)現(xiàn)不行,各種報錯,不知道為什么;
這個的配置可以,在此記錄下
二、openresty打印請求頭方法
1.安裝好openresty
2.找到nginx配置文件nginx.conf
,增加一種日志打印格式,可以寫在http {
里:
http { include mime.types; default_type application/octet-stream; #這個是默認日志格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #這個是自定義的打印請求頭的日志格式 log_format accesslog_headers '$time_iso8601' '\t$request_time' '\t$status' '\t$remote_addr' '\t$http_x_forwarded_for' '\t$host' '\t$server_addr' '\t$request_method' '\t$uri' #cs-uri-stem '\t$args' #cs-uri-query '\t"$http_user_agent"' '\t"$http_referer"' '\t$bytes_sent' '\t$request_length' '\t$upstream_addr' '\t$upstream_status' '\t$upstream_response_time' '\t$request_uri' '\t$request_headers'; #設(shè)置這個變量,后面賦值 #這里配置后全局的日志都會用默認日志格式main,日志打印位置是logs文件夾里的access.log文件 access_log logs/access.log main;
3.繼續(xù)修改nginx.conf,可以在想打印request_header的location里加,也可以加在全局。
以下是在某個location
里加的方法樣例:
location /my/header/api/ { #這個是增加的,使用打印請求頭的日志格式accesslog_headers,日志打印位置是logs/access_headers.log access_log logs/access_headers.log accesslog_headers; #給request_headers變量賦值,使用lua獲取到請求頭 set_by_lua $request_headers 'local h = ngx.req.get_headers() local request_headers_all = "" for k, v in pairs(h) do request_headers_all = request_headers_all .. ""..k..": "..v..";" end return request_headers_all';
這樣配置可以指定訪問某個location才打印header,并且不影響main格式的日志,比較方便。
4.保存配置文件,重啟nginx。
5.當有請求訪問/my/header/api/
時,就會打印日志,本人的日志文件路徑在/home/myuser/openresty/nginx/logs /access_headers.log
。
三、備注
1.如果想打印請求體,直接日志格式log_format
里加默認的$request_body
即可(不用自己賦值),然后就會打印出來。(再次注意原版nginx沒有$request_header,所以才換成openresty自己用lua賦值)
2.如果想打印響應頭和響應體(例如后臺服務(wù)器返回的),也可以自己日志格式里加2個變量,后續(xù)用lua賦值,然后打印。
到此這篇關(guān)于nginx打印請求頭日志方法(親測可用)的文章就介紹到這了,更多相關(guān)nginx打印請求頭日志內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx日志中request_time和upstream_response_time區(qū)別
Nginx日志中的request_time和upstream_response_time是關(guān)鍵的性能指標,本文就來介紹一下Nginx日志中request_time和upstream_response_time區(qū)別,具有一定的參考價值,感興趣的可以了解一下2024-11-11CentOS 7.3.1611編譯安裝Nginx1.10.3+MySQL5.7.16+PHP7.1.2
這篇文章主要介紹了CentOS 7.3.1611編譯安裝Nginx1.10.3+MySQL5.7.16+PHP7.1.2,需要的朋友可以參考下2018-01-01為nginx設(shè)置默認虛擬主機(空主機頭,默認主機頭)
nginx的默認虛擬主機在用戶通過IP訪問,或者通過未設(shè)置的域名訪問(比如有人把他自己的域名指向了你的ip)的時候生效2010-11-11Nginx 獲取客戶端真實IP $remote_addr與X-Forwarded-For的實現(xiàn)
我們大多數(shù)情況下訪問服務(wù)時,客戶端并不是直接訪問到服務(wù)器的,本文主要介紹了Nginx 獲取客戶端真實IP $remote_addr與X-Forwarded-For的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-03-03