分享兩個小問題!
本文首發於個人微信公眾號《andyqian》,期待你的關注!
前言
有好一段時間沒有更新文章了,期間有好幾次提筆。卻又不知,如何下手。今天來分享兩個常見的小問題。
(一) Linux上傳檔案後大小總是為0 kb大小
問題描述:無論是使用xftp工具,還是使用rz命令上傳至Linux伺服器中的檔案大小總是為0。
導致原因 :
經分析,由於系統磁碟被佔滿導致。
可以通過命令df -lh
命令來檢視系統情況。 如下所示:
-
[[email protected] ~]# df -lh
-
Filesystem Size Used Avail Use% Mounted on
-
/dev/vda1 79G 79G 0G 100% /
-
tmpfs 1.9G 0 1.9G 0% /dev/shm
-
/dev/vda3 16G 44M 15G 1% /home
其中:
-
Size :表示該磁碟(掛載區)的總大小。
-
Used :表示已使用大小。
-
Avail: 表示剩餘可用大小。
-
Use%: 表示磁碟使用率。
-
Mounted on:表示掛載區,其中 / 表示根目錄
備註: 我們可以通過上述引數,來了解系統當前磁碟的使用情況。
解決辦法:
-
刪除掉伺服器中多餘的檔案,釋放伺服器資源。
-
如果伺服器沒有多餘檔案,可以考慮增加磁碟空間。
(二) 獲取使用者真實IP地址
我們在設計系統時,有很多場景需要獲取到使用者的真實IP地址。其中部分業務還依賴使用者的真實IP地址。
包括但不限於以下場景::
記錄使用者登入行為。
在關鍵業務中,記錄使用者請求ip地址。
使用者短時間內頻繁切換IP地址,需要進行安全驗證等等。
在單機應用時,我們通常使用request.getRemoteAddr();
方法就能獲取到使用者的真實ip地址。但使用負載,以及代理伺服器時,我們就應該使用下述方法進行獲取:
-
public static String getRemoteAddr(HttpServletRequest request) {
-
String ip = request.getHeader("x-forwarded-for");
-
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
-
ip = request.getHeader("Proxy-Client-IP");
-
}
-
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
-
ip = request.getHeader("WL-Proxy-Client-IP");
-
}
-
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
-
ip = request.getRemoteAddr();
-
}
-
return ip;
-
}
如果使用nginx作為代理伺服器,通常建議在nginx/conf下nginx.conf檔案中對應的location路徑下新增以下配置:
-
proxy_set_header Host $host;
-
proxy_set_header X-Real-IP $remote_addr;
-
proxy_set_header REMOTE-HOST $remote_addr;
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
最後
在上一篇文章中,我談到了使用者隱私。作為軟體從業者,我們有義務,更有責任保護好使用者的隱私資料。一些稍成規模的公司。一般都會有安全部門。對業務資料提出安全性的建議以及對使用者資料安全做攻防。最近做的業務與安全聯絡的比較多。在這裡就再囉嗦幾句。就算拋磚引玉了。
-
對於使用者敏感資訊:
手機號,郵箱,登入密碼,交易密碼,身份證資訊
等隱私資料均要以密文的形式落庫。在業務層進行資料的加解密。
-
介面提供出來的隱私資料,均要進行混淆處理。
-
系統中關鍵路徑中儘可能的記錄使用者資訊。(如登入請求,記錄使用者ip地址等等)。
推薦閱讀:
掃碼關注,一起進步
個人部落格: http://www.andyqian.com