發表文章

透過 curl 的 timeout 設定識別 http 的網路連線壅塞問題

網路連線壅塞是一個難解的問題, 因為網路會產生抖動(Jitter)現象, 抖動發生時, 連線會突然變得很慢. 當狀況改善後就會回復. 但很大的原因是因為是因為 DNS 解析或是 TCP 交握的過程產生的問題.  當 curl 連線到一個 HTTP 網址時,其工作流程包括以下幾個主要步驟: 1. DNS 查詢 目標 :解析主機名 (如 example.com ) 對應的 IP 位址。 過程 : curl 通過 DNS 伺服器進行查詢,獲取目標伺服器的 IP 地址。 結果 :若查詢成功,返回 IP 地址, curl 將繼續下一步。若查詢失敗, curl 則返回 DNS 錯誤並中止。 2. TCP 三向交握 (Three-Way Handshake) 目標 :建立與目標伺服器的 TCP 連線。 過程 : curl 通過系統內核發送一個 SYN 封包,目標伺服器回應 SYN-ACK ,然後 curl 返回 ACK 完成三向交握,建立起 TCP 連線。 結果 :若在 --connect-timeout 設定時間內未完成三向交握,則連線失敗並返回超時錯誤。 3. 發送 HTTP 請求 目標 :向伺服器發送具體的 HTTP 請求,根據 URL 設定不同的請求方法(如 GET 、 POST )。 過程 : curl 構建 HTTP 請求標頭並附加任何所需的數據(如表單數據),然後通過已建立的 TCP 連線將請求發送到伺服器。 結果 :伺服器接收請求並準備回應,若過程中出現網路問題,則請求可能中止或失敗。 4. 伺服器處理請求並返回回應 目標 :伺服器根據請求的 URL 路徑處理並生成對應的回應內容。 過程 :伺服器確認請求內容後,由 HTTP 伺服器(如 httpd )根據需求(例如讀取靜態文件或調用後端服務)生成回應,並加上適當的 HTTP 狀態碼和標頭。 結果 :伺服器將回應內容傳回給 curl 客戶端。 5. 接收 HTTP 回應 目標 : curl 從伺服器接收回應數據,並在終端或指定的輸出目標中顯示。 過程 : curl 讀取 HTTP 回應標頭(包括狀態碼,如 200 OK 、 404 Not Found 等)及內容,並根據需要顯示、保存或處理該回應。 結果 :若指定了輸出文件, curl 將回應寫入文件;若未指定,則在終端中顯示。...

VMWARE VM linux 擴充硬碟空間

可以參考 AWS 上面的文章  https://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html  但 EC2 流程更簡單, 你在EC2調整後他自動幫你最佳化到好. Linux 內部他幫你處理了. VMWARE ESXi 就自己動手流程是 先調整 VMWARE 的VM硬碟空間 再去 LINUX 擴大硬碟分割區 然後把  FileSystem 放大 就好了...XD but 很重要的是, 因為這些有風險建議先備份免得出意外!!!  VMWARE ESXi Ubuntu Linux 放大VM硬碟 ESXi 把要放大硬碟的VM主機關機, 調整外部的硬碟容量設定大小(增大) 重開機, 從 ESXi console 登入 root 調整 可以先檢查目前的 disk 容量 # fdisk /dev/sda -l 重新掃描磁碟, ex: /dev/sda # echo 1 | sudo tee -a /sys/block/sda/device/rescan 延伸VM磁碟配置表 , 延伸後可以再檢查看看VM硬碟容量是否已經改變 #  growpart /dev/sda 3 重新讀取磁碟配置表 #  partprobe -s /dev/sda 延伸 LVM 的 Physical Extent (PE) , pvdisplay 可以檢查pv容量是否變化 #  pvresize -v /dev/sda3 延伸 LVM 的 Logical Volume (LV) * 完全延展 # lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv * 指定容量延展 # lvextend -L +100G /dev/ubuntu-vg/ubuntu-lv 延伸檔案系統 size , 可以用 df -lh 檢查容量 # resize2fs /dev/ubuntu-vg/ubuntu-lv

NGINX 沒有 index.html 預設顯示目錄索引

圖片
可以參考這一篇  https://serverfault.com/questions/312796/custom-autoindex-pages-with-nginx 設定 nginx 沒有 index.html 有索引檔案 location / { autoindex on; autoindex_format xml; xslt_stylesheet /path/to/custom.xslt } 但是設定好不是很美觀, 沒有 CSS 的排版及顏色  https://github.com/gibatronic/ngx-superbindex  再參考這個專案, 改成 xslt 檔案來配顏色及排版. 大功告成!!

買個 HTTP SSL 憑證

圖片
自從 sslforfree 及 letsencrypt 有提供免費憑證後, 就很少參與付費買憑證這種事    https://www.sslforfree.com/     https://letsencrypt.org/zh-tw/  後來連 wildcard 也跟著免費了  https://community.letsencrypt.org/t/acme-v2-production-environment-wildcards/55578 但, 在商業應用上, 為了某些因素還是得買個有效長一點的憑證, 才不會拿出來感覺像是詐騙網站 搜尋一下網路上賣憑證的廠商超級多的, 實在不知道該如何比較.. 後來我只能稍微檢查一下, 看看瀏覽器內的內建憑證商, 有哪些憑證有效期間比較長來選擇 這裡有些基本的憑證資訊要先理解一下,  買起來才會順利 https://haway.30cm.gg/ssl-key-csr-crt-pem/ 申請的流程 1.需要先有個私鑰 Private Key 2.還需要有簽署憑證須求檔 CSR 3.再來提交到網站上, 他就會給你生成的 CRT 憑證, 及 PEM or CRT 中繼憑證 以  https://cheapsslsecurity.com/ 為例, 你先選擇 SSL 憑證廠牌後, 在選擇需要的憑證格式 付款後就會進入生成憑證的流程.  但還是需要先生成 Private Key 才可以 可以用 openssl 工具產生KEY and CSR ubuntu@hk:~/csr$ openssl req -new -newkey rsa:2048 -sha256 -nodes -out wildcard.apptest.com.csr -keyout wildcard.apptest.com.key -subj "/C=HK/ST=Queenswat/L=Admiralty/O=Topplayer/OU=IT/CN=*.apptest.com" 這裡我生成的是一個 Wildcard 的萬用字元憑證, 網站會依據 csr 生成簽署過後的 CRT 給你, 通常會是一個 ZIP 壓縮檔.  因為商業銷售與代理機制的關係, 所以通常不會是由 ROO...

LibreOffice Draw 可以編輯PDF

圖片
 昨天最驚訝的事, 一直有再用的 LibreOffice 的軟體,  LibreOffice Draw 可以編輯PDF LibreOffice Office 編輯PDF 原來在 WIKI 都有寫了, 沒遇到還真的不知道. 這樣 Adobe Acrobat 難怪要轉往雲端發展了. XDXD 馬上下載來玩玩吧!!! https://zh-tw.libreoffice.org/  

xshell 3.0 無法登入 ubuntu 2004 LTS 版本

圖片
當你的 xshell or ssh client 無法登入新版的ssh server... no matching key exchange method found. Their of offer: diffie-hellman-group1-sha1. * 錯誤訊息應該長得雷同 # tail /var/log/auth.log Apr 24 13:43:45 mtchang sshd[1537]: Unable to negotiate with 172.24.0.201 port 61949: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael128-cbc,rijndael192-cbc,rijndael256-cbc,rijndael-cbc@lysator.liu.se [preauth] * 降版本應該可以好 root@mtchang:~# tail -n 5 /etc/ssh/sshd_config Ciphers 3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 root@jutainet:~# /etc/init.d/ssh restart Restarti...

Ubuntu 19.10 LTS Mini. install 調整Linux內部預設時區

圖片
Ubuntu 19.10  LTS Mini. install 調整Linux內部預設時區 最小安裝 ubuntu 的時候,預設都是設定 UTC +0 的時區,有時候真的很難對時間。 Ubuntu 只要透過安裝 tzdata 就可以設定預設時間了  sudo apt-get install tzdata 如果你已經設定過了,可以透過 sudo dpkg-reconfigure tzdata 重新設定。 詳細過程如下: jangmt@instance-1-tokyo:/usr/share$ sudo apt-get install tzdata Reading package lists... Done Building dependency tree      Reading state information... Done The following NEW packages will be installed:   tzdata 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 208 kB of archives. After this operation, 3534 kB of additional disk space will be used. Get:1 http://asia-northeast1.gce.archive.ubuntu.com/ubuntu eoan/main amd64 tzdata all 2019c-3 [208 kB] Fetched 208 kB in 1s (171 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package tzdata. (Reading database ... 63700 files and directories currently installed.) Preparing to unpack .../tzdata_20...