nginx上匹配特定請求,並列印日誌

2021-09-12 14:31:40 字數 1203 閱讀 6121

背景:使用者報障,在華為原生瀏覽器訪問帖子頁,會被防盜煉攔截。而在其他瀏覽器不會有這個問題。

防盜煉的設定跟referer相關。一開始想的是通過手機連線fiddler**,觀察請求帶的referer是什麼。但因為觸屏版用了https,而同事手上能重現此問題的華為手機又死活安裝不上fiddler的證書,所以沒法通過fiddler來捕捉請求。

因為訪問要先經過nginx,所以想著在nginx上列印出其中一張的訪問請求,檢視其referer。但因為訪問量有點大,不適合打出所有訪問日誌。

解決方法:

0、自定義乙個訪問日誌格式;

1、通過nginx的map,建立乙個變數$loggable。該變數預設值為0,只有$request為特定的請求時,其值才為1;

2、在server中配置access_log的時候,帶上if=$loggable條件。

例:只列印出/p/12345.jpg的請求,具體配置如下:

0、自定義日誌格式:

'"$upstream_addr" "$upstream_response_time"';1、使用map,建立並初始化變數:

map $request $loggable
2、在配置access_log時,通過該變數來判定是否應該列印日誌:

server
3、儲存並檢查nginx.conf:

cd /pathtonginx/sbin/

./nginx -t

4、若檢查沒問題,則重啟nginx:

./nginx -s reload
最後,發現 華為原生瀏覽器的舊版本,在請求時,的確沒有帶上referer。公升級到最新版本後,這個問題應該已經消除了。

另外,還發現nokia7plus,gome s1等手機上的部分瀏覽器也會有這個問題。

PHP正則匹配特定中文

php的正則匹配中文一直比較麻煩,要將漢字轉化為內碼才能匹配得到。這段時間需要用到這方面的東西,但是在網上找不到這方面的資料。所以不得不自己去研究,經過一番摸索。終於實現了特定中文的匹配。廢話少說,直接上 html 這是漢字 preg match all xba xba xd7 xd6 html,m...

nginx匹配規則

nginx的location可以有以下幾個匹配 1.嚴格匹配這個查詢。如果找到,停止搜尋。2.匹配路徑的字首,如果找到,停止搜尋。3.為區分大小寫的正則匹配 4.為不區分大小寫匹配 波浪線表示執行乙個正則匹配,區分大小寫 表示執行乙個正則匹配,不區分大小寫 表示普通字元匹配,如果該選項匹配,只匹配該...

nginx 路徑匹配

location 精準匹配 只匹配指定的請求路徑 location aaa字首匹配 不使用正規表示式,匹配指定字首開頭的請求路徑 location aaa正則匹配 匹配符合正規表示式的請求路徑,區分大小寫 location html location aaa html 正則匹配 匹配符合正規表示式的...