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,增加一種日志打印格式,可以寫(xiě)在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)文章
詳解阿里云LINUX服務(wù)器配置HTTPS(NGINX)
本篇文章主要介紹了阿里云LINUX服務(wù)器配置HTTPS(NGINX) ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
nginx將https協(xié)議反向代理到http協(xié)議請(qǐng)求上
在項(xiàng)目正式上線時(shí),一般會(huì)申請(qǐng)域名和證書(shū)來(lái)實(shí)現(xiàn)https的服務(wù),本文主要介紹了nginx將https協(xié)議反向代理到http協(xié)議請(qǐng)求上,具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05
通過(guò)nginx實(shí)現(xiàn)方向代理過(guò)程圖解
這篇文章主要介紹了通過(guò)nginx實(shí)現(xiàn)方向代理過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
同一臺(tái)服務(wù)器安裝多個(gè)Nginx的方法總結(jié)
在同一臺(tái)服務(wù)器上安裝多個(gè)nginx完全沒(méi)有問(wèn)題,但有些地方是需要注意的,這篇文章為大家整理了一些常會(huì)遇到的問(wèn)題以及解決方法,需要的可以參考一下2023-08-08
詳解如何設(shè)置Nginx實(shí)現(xiàn)內(nèi)外網(wǎng)端口映射
在 Nginx 中實(shí)現(xiàn)內(nèi)外網(wǎng)端口映射是一種常見(jiàn)的做法,本文詳細(xì)介紹如何設(shè)置 Nginx 實(shí)現(xiàn)內(nèi)外網(wǎng)端口映射,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-10-10
Keepalived+Nginx+Tomcat 實(shí)現(xiàn)高可用Web集群的示例代碼
這篇文章主要介紹了Keepalived+Nginx+Tomcat 實(shí)現(xiàn)高可用Web集群的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
使用LDAP實(shí)現(xiàn)Nginx用戶認(rèn)證的示例
本文主要使用Nginx和LDAP實(shí)現(xiàn)用戶認(rèn)證,通過(guò)配置Nginx和安裝nginx-auth-ldap模塊,可以實(shí)現(xiàn)基于LDAP的認(rèn)證邏輯,下面就來(lái)介紹一下,感興趣的可以了解一下2024-12-12
基于Nginx實(shí)現(xiàn)一個(gè)灰度上線系統(tǒng)的示例代碼
本文主要介紹了基于Nginx實(shí)現(xiàn)一個(gè)灰度上線系統(tǒng)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07

