首頁 運維 Nginx Linux伺服器nginx存取日誌裡出現大量http 400錯誤怎麼解決

Linux伺服器nginx存取日誌裡出現大量http 400錯誤怎麼解決

May 21, 2023 pm 07:28 PM
linux nginx

Linux服务器nginx访问日志里出现大量http 400错误怎么解决

伺服器中的錯誤記錄類似於這種:

124.65.133.242 – – [27/oct/2014:14:30:51 0800] “-” 400 0 “-” “-”
124.65.133.242 – – [27/oct/2014:14:31:45 0800] “-” 400 0 “-” “-”
#124.65.133 [.24222422 – –”
#124.65.133 [. 27/oct/2014:14:31:45 0800] “-” 400 0 “-” “-”

124.65.133.242 – – [27/oct/2014:14:31:45 0800] “-” 400 0 “-” “-”

踩點

經過分析nginx的log文件,發現都是在一次正常存取之後產生的數個400錯誤,每次有大概連續出現1-6個不等,也並不是每次客戶造訪都會產生400錯誤。

再觀察產生400錯誤的前一次訪問是很正常的,200狀態碼,正常的文件,正常的來路,正常的user-agent… 一切都很和諧,那400是腫麼來的呢?

透過仔細觀察發現,所有產生400錯誤的前一次訪問的user-agent都是google chrome瀏覽器留下的,也就是說400錯誤是由chrome瀏覽器產生的。但是經過本地抓包發現,chrome是沒有向伺服器發送異常請求或資料包的。

在抓包分析中發現,chrome在存取伺服器時發起的連線不只一個,一般有5到6個不等,而如果請求的資源不需要那麼多連線時,chrome就會關閉未用的連接,這項技術叫做pre-connection「預先連接」。

通常我們造訪一個網站時,第一個取得的是一個html主文件,而裡面連結了網頁所需的css、js、圖片等其他媒體資源文件,而一般資源檔案和主html文件是在一個網域下的,預先連接就是在取得html之前就建立很多的tcp連接,而不是等到取得到html檔案之後再去連接伺服器取得其他的文件, 因為連接伺服器是需要消耗一些時間的,所以這項技術可以很大程度地加快網頁的呈現速度。

如果網頁html連結的資源比較少,或是客戶端有緩存,不需要連線下載,那麼chrome瀏覽器發出的5-6個連線很可能只有1個是需要的,其他的都得關閉掉,這樣就產生了一個問題:連接了伺服器,而沒有發送任何請求。對於這種情況,nginx是當做400錯誤來處理的,但由於連接已經關閉,錯誤訊息不會發送到客戶端,這就產生了日誌檔案中記錄了錯誤,而抓包分析中什麼也看不到的現象。


測試

要驗證上面的分析結果很簡單,打開命令列cmd.exe,在裡面輸入telnet serverip 80,等待連線成功之後直接關掉cmd,這時去查看nginx的log檔案中就多了一筆400錯誤記錄。


一句評論

pre-connection的優點已經很清楚了,但是它也是有缺點的,如果站長做了優化,使用了cookie-free技術,或者網頁和靜態資源使用不同的伺服器,那麼網頁需要的css、js資源就和主html不在同一個網域下,也可能不在同一個ip上,那麼pre-connection不僅是雞肋,而且會對主html伺服器產生不必要的負擔。

其它原因

網路上很多人寫過相關的文章,大多的人的原因是因為header 的頭部大小超了,引起回應400 告訴是bad request.但其實還有一種可能,就是像埠測試工具,只是檢查埠是否是活的。像 lvs 之類什麼的,也會造成這種問題,然後日誌中會出現大量的 400 錯誤。

對於上述問題可以在nginx.conf中,將client_header_buffer_size和large_client_header_buffers都調大,可緩解此問題。 ###

以上是Linux伺服器nginx存取日誌裡出現大量http 400錯誤怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Stock Market GPT

Stock Market GPT

人工智慧支援投資研究,做出更明智的決策

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

愛思助手正版下載入口_愛思助手iPhone安裝鏈接 愛思助手正版下載入口_愛思助手iPhone安裝鏈接 Sep 16, 2025 am 11:30 AM

愛思助手正版下載入口在官網https://www.i4.cn/,提供電腦端和手機端下載,支持設備管理、應用安裝、模式切換、屏幕投射及文件管理等功能。

華為HarmonyOS 6系統取消'NEXT”後綴:以後都是原生鴻蒙 華為HarmonyOS 6系統取消'NEXT”後綴:以後都是原生鴻蒙 Sep 24, 2025 pm 04:12 PM

9月18日最新消息,華為HarmonyOS6已啟動多輪面向開發者的預覽版推送,近期更首次向部分嚐鮮用戶開放體驗資格。根據用戶反饋,當前系統名稱已不再顯示“NEXT”後綴,正式更名為HarmonyOS6.0。華為最初於2023年8月的開發者大會首次提出HarmonyOSNEXT這一命名,旨在標誌鴻蒙系統邁入全新發展階段,實現真正的原生自研。 HarmonyOSNEXT最核心的突破在於徹底採用自主研發的系統底層架構,全面移除Linux內核及安卓AOSP代碼,僅運行基於HarmonyOS內核的應用程序,

如何在Linux上運行Windows程序 如何在Linux上運行Windows程序 Sep 18, 2025 am 03:25 AM

torunwindowsProgramsonLinux,TrytheSemethods:1。 usesewinetodirectlyrun.exefiles.2.installplayonlinuxforeasierwinemanagement.3.setupawindowsvirtualmachinewithvirtualbox.4.uselututristointristristoinstallandrundrundrunwindrundrunwindrunwindrunwindrundrunwindremeseameameameameamemellysly。

如何在Linux中找到程序的路徑 如何在Linux中找到程序的路徑 Sep 16, 2025 am 08:56 AM

tolocateaprogram'sinstallationPathOnlinux,使用:1。 WHAICHPROGRAME_NAMEFORQUICKPATS基礎lookup.2.Whereisprogram_nametofingrogram_nametofindbinaries,manpages.3.locateWithupDateWithupDatedBandGrepforfastFastFastFastFastFastFastFastFastFastilesearches.4.4.find/typef-typef-typef-typef-ecececutable-name-name progry'progry'progry'fort

如何在Linux上拍攝屏幕截圖 如何在Linux上拍攝屏幕截圖 Sep 15, 2025 am 03:35 AM

TotakesCreenshotsonLinux:1。 useprtscnkeyforfullscreen,alt prtscnforactiveWindow.2.UseGnomesCreensHottoolShottoolFormoreOptions.3.UseGeSnome-ScreenshotCommandInterminal.4.InstallandSallandSallansCrotforlightweightlightweightweightlightweightweightlightweightlightweightCommand-command-command-lineCapturing。

如何在Linux上安裝VS代碼 如何在Linux上安裝VS代碼 Sep 16, 2025 am 09:04 AM

toinstallvScodeonLinux,Usetheeficialaptrepositoryforautomationupdates,SnapforCross-Distribution-Compatibility,Oramanualtarballforfullcontrol.ChooseBashioneBasedonyourSasedonyourSasedonyoursyStemsteneds和Needs。

如何在Linux命令行中檢查磁盤空間 如何在Linux命令行中檢查磁盤空間 Sep 21, 2025 am 04:46 AM

ToCheckDiskSpaceOnlinux,Usedf-HforanoverViewOfStorage,Du-ShtofIndDirectorySizes,lsblktolistblockdevices,OrinstallncduforanInteractiveanalysission.thesetoolsetoolshelpmonitor和manageSkusageSkusageSkusageSkusageageSageSkusageSageSkageAgefly。

如何在Linux上安裝NVIDIA驅動程序 如何在Linux上安裝NVIDIA驅動程序 Sep 15, 2025 am 03:46 AM

IfyoufacedisplayorperformanceissueswheninstallingNVIDIAdriversonLinux,followthesesteps:1.IdentifyyourGPUmodelusinglspci.2.Useyourdistribution’spackagemanagertoinstalltherecommendeddriver.3.Optionally,downloadandinstallthelatestdriverfromNVIDIA’swebsi

See all articles