近日敝單位踩到 HSTS 的地雷,於是就著手解決問題…
先說地雷的引爆點: 新上線 example.com 這網站給了 “strict-transport-security: max-age=31536000; includeSubDomains” 這組 HTTP header,使得原本透過 Apache Tomcat 提供服務的 http://system.example.com.tw:8080/ 網頁瀏覽異常;因瀏覽器參照 HSTS 後,只把 “http://” 改為 “https://” ,瀏覽器不知道應該同步修改連接埠號(port 8080)。
因為這幾台伺服器的網頁服務僅使用 Apache Tomcat,沒有 Apache HTTPD、nginx 等其他軟體佔用 port 80 與 443,用 iptables 作 port redirection 就可以擺平,調整的方式會比較簡單。
需要作的事的大概就這些:
- 取得 SSL certificates,並確認 renew 的時候可重新啟動 Apache Tomcat
- 安裝 Tomcat Native
- 調整 Tomcat 的 server.xml
- 調整 iptables rules
Apache Tomcat 7 的 server.xml 用這段(某些參數視狀況調整):
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="200" SSLEnabled="true"
SSLCertificateFile="/etc/letsencrypt/live/example.com/cert.pem"
SSLCertificateKeyFile="/etc/letsencrypt/live/example.com/privkey.pem"
SSLCACertificateFile="/etc/letsencrypt/live/example.com/chain.pem" />
Apache Tomcat 9 的 server.xml 用這段(某些參數視狀況調整),支援 HTTP/2:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="200" SSLEnabled="true" >
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeyFile="/etc/letsencrypt/live/example.com/privkey.pem"
certificateFile="/etc/letsencrypt/live/example.com/cert.pem"
certificateChainFile="/etc/letsencrypt/live/example.com/chain.pem"
type="RSA" />
</SSLHostConfig>
</Connector>
iptables rules 增加以下這兩條:
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443
6 月 3 2024
Raspberry Pi 5 的 PCIe ( Gen2 vs Gen3 )
我之前測完 Raspberry Pi 5 的 PCIe 之後,便丟了些東西讓它跑,順便觀察其在室溫的運作狀況。
搭配 Argon NEO 5 M.2 NVME PCIE Case for Raspberry Pi 5 的運作狀況: CPU 均溫約攝氏 60 度 (風扇轉速約 3500 RPM,挺安靜)、Intel 760p SSD 約攝氏 30 度。
但我發現其 PCIe 規格是可以用 Gen3 運作的,便又好奇測試看看。
預設的模式是 Gen2 (LnkCap 是其匯流排能力,LnkSta 是目前運作的匯流排模式):
![](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201%201'%3E%3C/svg%3E)
![](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201%201'%3E%3C/svg%3E)
用 fio 測試循序讀取,iops 約 97.9k,傳輸約 383MB/s。
改用 PCIe Gen3:
![](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201%201'%3E%3C/svg%3E)
![](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201%201'%3E%3C/svg%3E)
![](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201%201'%3E%3C/svg%3E)
用 fio 測試循序讀取,iops 約 141k,傳輸約 551MB/s。
與 Gen2 相比,大約是 50% 的性能提昇;但隨機讀寫的效能提昇幅度不大,Gen3 的 iops 約 54.5k,傳輸約 213MB/s。
我曾讓它改用 PCIe Gen3,但擺著不到一天,它就失聯了…![](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201%201'%3E%3C/svg%3E)
最後乖乖改回來…
By Joe Horn • Computer Hardware 0 • Tags: benchmarking, fio, PCIe, PCIe Gen2, PCIe Gen3, Raspberry Pi, Raspberry Pi 5