nginx打印請(qǐng)求頭日志方法(親測(cè)可用)
一、前言
之前想用nginx打印收到的請(qǐng)求的請(qǐng)求頭,但是只找到打印請(qǐng)求體的,沒(méi)有打印請(qǐng)求頭的,感覺(jué)原版nginx不支持。
建議如果想打印請(qǐng)求頭,先換成openresty
(本人安裝的是openresty-1.21.4.1.tar.gz版本的)
網(wǎng)上有些文章的配置,本人試了后發(fā)現(xiàn)不行,各種報(bào)錯(cuò),不知道為什么;
這個(gè)的配置可以,在此記錄下
二、openresty打印請(qǐng)求頭方法
1.安裝好openresty
2.找到nginx配置文件nginx.conf,增加一種日志打印格式,可以寫在http {里:
http {
include mime.types;
default_type application/octet-stream;
#這個(gè)是默認(rèn)日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#這個(gè)是自定義的打印請(qǐng)求頭的日志格式
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è)置這個(gè)變量,后面賦值
#這里配置后全局的日志都會(huì)用默認(rèn)日志格式main,日志打印位置是logs文件夾里的access.log文件
access_log logs/access.log main;3.繼續(xù)修改nginx.conf,可以在想打印request_header的location里加,也可以加在全局。
以下是在某個(gè)location里加的方法樣例:
location /my/header/api/ {
#這個(gè)是增加的,使用打印請(qǐng)求頭的日志格式accesslog_headers,日志打印位置是logs/access_headers.log
access_log logs/access_headers.log accesslog_headers;
#給request_headers變量賦值,使用lua獲取到請(qǐng)求頭
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';
這樣配置可以指定訪問(wèn)某個(gè)location才打印header,并且不影響main格式的日志,比較方便。
4.保存配置文件,重啟nginx。
5.當(dāng)有請(qǐng)求訪問(wèn)/my/header/api/時(shí),就會(huì)打印日志,本人的日志文件路徑在/home/myuser/openresty/nginx/logs /access_headers.log。
三、備注
1.如果想打印請(qǐng)求體,直接日志格式log_format里加默認(rèn)的$request_body即可(不用自己賦值),然后就會(huì)打印出來(lái)。(再次注意原版nginx沒(méi)有$request_header,所以才換成openresty自己用lua賦值)
2.如果想打印響應(yīng)頭和響應(yīng)體(例如后臺(tái)服務(wù)器返回的),也可以自己日志格式里加2個(gè)變量,后續(xù)用lua賦值,然后打印。
到此這篇關(guān)于nginx打印請(qǐng)求頭日志方法(親測(cè)可用)的文章就介紹到這了,更多相關(guān)nginx打印請(qǐng)求頭日志內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx日志中request_time和upstream_response_time區(qū)別
Nginx日志中的request_time和upstream_response_time是關(guān)鍵的性能指標(biāo),本文就來(lái)介紹一下Nginx日志中request_time和upstream_response_time區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2024-11-11
CentOS 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è)置默認(rèn)虛擬主機(jī)(空主機(jī)頭,默認(rèn)主機(jī)頭)
nginx的默認(rèn)虛擬主機(jī)在用戶通過(guò)IP訪問(wèn),或者通過(guò)未設(shè)置的域名訪問(wèn)(比如有人把他自己的域名指向了你的ip)的時(shí)候生效2010-11-11
Nginx?配置?WebSocket?代理的操作過(guò)程
這篇文章主要介紹了Nginx?配置?WebSocket?代理的操作過(guò)程,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-04-04
Nginx 獲取客戶端真實(shí)IP $remote_addr與X-Forwarded-For的實(shí)現(xiàn)
我們大多數(shù)情況下訪問(wèn)服務(wù)時(shí),客戶端并不是直接訪問(wèn)到服務(wù)器的,本文主要介紹了Nginx 獲取客戶端真實(shí)IP $remote_addr與X-Forwarded-For的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03

