1. 程式人生 > >查詢一次nexus3無法下載raw代理檔案的問題

查詢一次nexus3無法下載raw代理檔案的問題

背景

再利用OWASP Dependency Check 工具做漏洞檢查時需要連線國家的漏洞庫,這裡利用到上篇部落格用到的nexus3代理的漏洞庫,在測試時發現有的漏洞庫檔案可以下載,有的檔案不可以下載,用瀏覽器下載時瀏覽器提示在這裡插入圖片描述

問題分析

這時候用過nexus3代理的都會知道,如果代理第一次訪問,會去遠端伺服器上下載,最後快取到本地的nexus3伺服器上。在這快取期間,可能會無法下載,那麼問題可能就是在這段時間,但是後來等了3個小時左右,還不可以下載,這時候問題應該就不是那個問題了,這時候去nexus3的伺服器上檢查日誌。發現伺服器上nexus3日誌正常

tail -f $NEXUS_HOME
/../sonatype-work/nexus3/log/nexus.log -n 10000

說名問題不在nexus3,這裡,這時候想著分析檢視一下伺服器資源是否正常,先檢視伺服器記憶體使用情況

free -m 

在這裡插入圖片描述
通過上圖可以看到伺服器記憶體資源充足,記憶體沒問題,那麼有沒有可能是儲存的問題呢

df -h

通過df -h 檢視後發現伺服器上/目錄下已經使用的100%了,這是問題已經明瞭了,就是沒有硬碟資源導致nexus3無法下載.

解決問題

那麼這時候需要檢視一下是什麼檔案佔用了大量的空間,使用前一篇部落格中提到的技巧最後查詢到是一個nginx的日誌佔用了大量的空間。大概3G左右,還是一個error的日誌?問題是為什麼這個error日誌這麼大。然後通過檢視nginx的配置檔案發現核心配置如下

  gzip  on;
    server {
        listen       80;
        server_name  localhost;
        access_log /var/log/nexus_access_log main;
        error_log  /var/log/nexus_error_log  debug_http;

原來是開啟了http的debug模式,導致每次請求都會產生除錯日誌到error的日誌中,OK 到這裡,已經真相大白了。
nginx http除錯日誌格式如下

2018/10/09 17:25:38 [debug] 836#0: *1 http process request header line
2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Host: 192.168.30.100"
2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Connection: keep-alive"
2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Content-Length: 992"
2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Origin: http://localhost"
2018/10/09 17:25:38 [debug] 836#0: *1 http header: "X-Requested-With: XMLHttpRequest"
2018/10/09 17:25:38 [debug] 836#0: *1 http header: "X-Nexus-UI: true"
2018/10/09 17:25:38 [debug] 836#0: *1 http header: "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Content-Type: application/x-www-form-urlencoded; charset=UTF-8"
2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Accept: */*"
2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Referer: http://localhost/"
2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Accept-Encoding: gzip, deflate"
2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Accept-Language: zh-CN,zh;q=0.9"
2018/10/09 17:25:38 [debug] 836#0: *1 http header: "Cookie: _ga=GA1.4.143565627.1521178533"
2018/10/09 17:25:38 [debug] 836#0: *1 http header done
2018/10/09 17:25:38 [debug] 836#0: *1 generic phase: 0
2018/10/09 17:25:38 [debug] 836#0: *1 rewrite phase: 1
2018/10/09 17:25:38 [debug] 836#0: *1 test location: "/"
2018/10/09 17:25:38 [debug] 836#0: *1 test location: "files/"

nexus3 無法下載raw檔案的原因?

  1. 伺服器沒有磁碟空間了,為什麼伺服器沒有磁碟空間了?
  2. 因為nginx的錯誤日誌中有除錯日誌,每次請求伺服器時都會產生大量的請求除錯日誌。
  3. 而nexus3是有nginx做了個反代處理的,而nginx沒有空間,程序就無法處理請求了

然後這裡直接刪除了錯誤的請求日誌。

rm -rf /var/log/nexus-error-log

刪除後,這時候檔案不在了,用檢視磁碟的命令檢視空間是否恢復,

df -h

竟然空間還是100%,應該是由於nginx的程序還佔用著這裡的檔案控制代碼,重啟nginx試一下

service nginx restart
df -h

重啟之後,ok,可以使用,再用瀏覽器下載檔案,可以下載了
在這裡插入圖片描述

問題解決

結論

對於Linux上的基礎性服務,需要有監控服務,可以有定期處理這些日誌檔案。有預警服務來完善這些事情