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 “-” “-”
踩點
經過分析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錯誤來處理的,但由於連接已經關閉,錯誤訊息不會發送到客戶端,這就產生了日誌檔案中記錄了錯誤,而抓包分析中什麼也看不到的現象。
測試
一句評論
其它原因
網路上很多人寫過相關的文章,大多的人的原因是因為header 的頭部大小超了,引起回應400 告訴是bad request.但其實還有一種可能,就是像埠測試工具,只是檢查埠是否是活的。像 lvs 之類什麼的,也會造成這種問題,然後日誌中會出現大量的 400 錯誤。 對於上述問題可以在nginx.conf中,將client_header_buffer_size和large_client_header_buffers都調大,可緩解此問題。 ###以上是Linux伺服器nginx存取日誌裡出現大量http 400錯誤怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

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

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

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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