欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux服務(wù)器nginx訪問日志里出現(xiàn)大量http 400錯誤的請求分析

 更新時間:2014年12月13日 13:15:58   投稿:mdxy-dxy  
這篇文章主要介紹了Linux服務(wù)器nginx訪問日志里出現(xiàn)大量http 400錯誤的請求分析,需要的朋友可以參考下

服務(wù)器中的錯誤記錄類似于這種:

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.242 – – [27/Oct/2014:14:31:45 +0800] “-” 400 0 “-” “-”
124.65.133.242 – – [27/Oct/2014:14:31:45 +0800] “-” 400 0 “-” “-”

踩點(diǎn)

經(jīng)過分析nginx的log文件,發(fā)現(xiàn)都是在一次正常訪問之后產(chǎn)生的數(shù)個400錯誤,每次有大概連續(xù)出現(xiàn)1-6個不等,而且也并不是每次客戶訪問都會產(chǎn)生400錯誤。

再觀察產(chǎn)生400錯誤的前一次訪問是很正常的,200狀態(tài)碼,正常的文件,正常的來路,正常的User-Agent… 一切都很和諧,那400是腫么來的呢?

通過仔細(xì)觀察發(fā)現(xiàn),所有產(chǎn)生400錯誤的前一次訪問的User-Agent都是Google Chrome瀏覽器留下的,也就是說400錯誤是由Chrome瀏覽器產(chǎn)生的。但是經(jīng)過本地抓包發(fā)現(xiàn),chrome是沒有向服務(wù)器發(fā)送異常請求或者數(shù)據(jù)包的。

在抓包分析中發(fā)現(xiàn),Chrome在訪問服務(wù)器時發(fā)起的連接不止一個,一般有5到6個不等,而如果請求的資源不需要那么多連接時,Chrome就會關(guān)閉未用的連接,這項技術(shù)叫做pre-connection“預(yù)先連接”。

通常我們訪問一個網(wǎng)站時,第一個獲取的是一個html主文件,而里面鏈接了網(wǎng)頁所需要的css、js、圖片等其他媒體資源文件,而一般資源文件和主 html文件是在一個域下的,預(yù)先連接就是在獲取html之前就建立很多的tcp連接,而不是等到獲取到html文件之后再去連接服務(wù)器獲取其他的文件, 因為連接服務(wù)器是需要消耗一些時間的,所以這項技術(shù)可以很大程度上加快網(wǎng)頁的呈現(xiàn)速度。

如果網(wǎng)頁html鏈接的資源比較少,或者客戶端有緩存,不需要連接下載,那么Chrome瀏覽器發(fā)出的5-6個連接很可能只有1個是需要的,其他的 都得關(guān)閉掉,這樣就產(chǎn)生了一個問題:連接了服務(wù)器,而沒有發(fā)送任何請求。對于這種情況,nginx是當(dāng)做400錯誤來處理的,但由于連接已經(jīng)關(guān)閉,錯誤信 息不會發(fā)送到客戶端,這就產(chǎn)生了日志文件中記錄了錯誤,而抓包分析中什么也看不到的現(xiàn)象。

測試
要驗證上面的分析結(jié)果很簡單,打開命令行cmd.exe,在里面輸入telnet serverip 80,等待連接成功之后直接關(guān)掉cmd,這時去查看nginx的log文件中就多了一條400錯誤記錄。

一句評論
pre-connection的優(yōu)點(diǎn)已經(jīng)很清楚了,但是它也是有缺點(diǎn)的,如果站長做了優(yōu)化,使用了Cookie-free技術(shù),或者網(wǎng)頁和靜態(tài)資源 使用不同的服務(wù)器,那么網(wǎng)頁需要的css、js資源就和主html不在同一個域下,也可能不在同一個IP上,那么pre-connection不僅是雞 肋,而且會對主html服務(wù)器產(chǎn)生不必要的負(fù)擔(dān)。

其它原因

網(wǎng)上很多人寫過相關(guān)的文章,大多的人的原因是因為 header 的頭部大小超了,引起響應(yīng) 400 告訴是 bad request.但其實(shí)還有一種可能,就是象端口測試工具,只是檢查端口是否是活的。像 LVS 之類什么的,也會引起這種問題,然后日志中會出現(xiàn)大量的 400 錯誤。

對于上述問題可以在nginx.conf中,將client_header_buffer_size和large_client_header_buffers都調(diào)大,可緩解此問題。

相關(guān)文章

  • 阿里云CentOS 7系統(tǒng)掛載SSD云盤的教程

    阿里云CentOS 7系統(tǒng)掛載SSD云盤的教程

    最近在阿里云購買了塊云盤,但悲催的發(fā)現(xiàn)阿里云購買的第2塊云盤默認(rèn)是不自動掛載的,需要手動配置掛載上。所以只能求助萬能的百度了,通過查找網(wǎng)上的資料,和自己的實(shí)踐終于將云盤掛載成功了,現(xiàn)在將步驟分享給大家,有同樣需要的朋友們可以參考借鑒。
    2016-11-11
  • Ubuntu17.04配置更換國內(nèi)源的方法

    Ubuntu17.04配置更換國內(nèi)源的方法

    本篇文章主要介紹了Ubuntu17.04配置國內(nèi)源的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 13個實(shí)用的Apache Rewrite重寫規(guī)則

    13個實(shí)用的Apache Rewrite重寫規(guī)則

    這篇文章主要介紹了13個實(shí)用的Apache Rewrite重寫規(guī)則,需要的朋友可以參考下
    2014-03-03
  • 記一次linux服務(wù)器入侵應(yīng)急響應(yīng)(小結(jié))

    記一次linux服務(wù)器入侵應(yīng)急響應(yīng)(小結(jié))

    這篇文章主要介紹了記一次linux服務(wù)器入侵應(yīng)急響應(yīng),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-08-08
  • Nginx+PHP+MySQL雙機(jī)互備、全自動切換方案

    Nginx+PHP+MySQL雙機(jī)互備、全自動切換方案

    在生產(chǎn)應(yīng)用中,某臺“Nginx+PHP+MySQL”接口數(shù)據(jù)服務(wù)器,扮演的角色十分重要,如果服務(wù)器硬件或Nginx、MySQL發(fā)生故障,而短時間內(nèi)無法恢復(fù),后果將非常嚴(yán)重。為了避免單點(diǎn)故障,我設(shè)計了此套方案,編寫了failover.sh腳本,實(shí)現(xiàn)了雙機(jī)互備、全自動切換,故障轉(zhuǎn)移時間只需幾十秒。
    2008-12-12
  • 利用.htaccess的Rewrite規(guī)則實(shí)現(xiàn)Discuz論壇的偽靜態(tài)鏈接

    利用.htaccess的Rewrite規(guī)則實(shí)現(xiàn)Discuz論壇的偽靜態(tài)鏈接

    重新開放了Minidx幫助論壇,雖然目前沒什么內(nèi)容,不過順便想SEO一下,實(shí)現(xiàn)偽靜態(tài)鏈接。
    2010-12-12
  • Linux下sftp登錄失敗的解決方案

    Linux下sftp登錄失敗的解決方案

    這篇文章主要介紹了Linux下sftp登錄失敗的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Linux下SFTP用戶權(quán)限設(shè)置條件及實(shí)現(xiàn)命令

    Linux下SFTP用戶權(quán)限設(shè)置條件及實(shí)現(xiàn)命令

    SFTP賬號是基于SSH賬號的,其擁有的權(quán)限是比較大的,今天主要教大家如何進(jìn)行SFTP用戶權(quán)限設(shè)置,感興趣的你可不要錯過了哈,希望本文知識可以幫助到你
    2013-02-02
  • CentOS7環(huán)境搭建python3以及與python2實(shí)現(xiàn)共存的方法

    CentOS7環(huán)境搭建python3以及與python2實(shí)現(xiàn)共存的方法

    這篇文章主要介紹了CentOS7環(huán)境搭建python3以及與python2實(shí)現(xiàn)共存的方法,結(jié)合實(shí)例形式簡單分析了CentOS7環(huán)境下安裝Python3的步驟、命令及測試代碼示例,非常簡單易懂,需要的朋友可以參考下
    2018-06-06
  • 使用CentOS7上的GitLab Runner,讓你的項目加速奔跑

    使用CentOS7上的GitLab Runner,讓你的項目加速奔跑

    本文介紹了在CentOS7上搭建和配置GitLabRunner的步驟,包括安裝前提、下載安裝、注冊到GitLab服務(wù)器、配置Runner執(zhí)行器以及高級配置等,通過這些步驟,可以實(shí)現(xiàn)代碼的快速、可靠構(gòu)建和部署
    2024-11-11

最新評論