Cloudflare與Nginx反向代理|CF-Connecting-IP、X-Forwarded-For 取得真實IP

在 Cloudflare、Nginx、Application Server 三層架構下,AP 收到的 IP 可能是 Cloudflare 節點的、Nginx 的 127.0.0.1、或使用者的真實 IP,搞混會讓 Rate Limit 和 access log 全部失準。本文圖解請求經過每一層時 X-Forwarded-For、X-Real-IP、CF-Connecting-IP 的變化,說明 Nginx real_ip 還原設定,並提供 Node.js、Python、Java、C# 取得真實 IP 的範例。

用 Docker 架設 Gitea rootless 版|安全的自架私人 Git 伺服器教學

想擁有一台完全自己掌控的 Git 服務,Gitea 是輕量又好維護的選擇。這篇用 Docker 的 rootless 版本從零架起一台 Gitea,容器內以非 root 身分執行、把提權風險降到最低,搭配 PostgreSQL 當資料庫。重點放在安全設定:關閉使用者自行註冊、要求登入才能瀏覽、用 CLI 建立管理員避開裸奔的安裝頁、保留 git hooks 的預設保護、強制 2FA,最後說明對外發布時該怎麼接上反向代理與 HTTPS。

Nginx Rate Limit 限流原理與設定教學|burst、nodelay 圖解

API 被爬蟲打爆、登入頁被暴力嘗試、單一 IP 把頻寬吃光,這些是現代網站常見的麻煩,Nginx 內建的 limit_req 模組幾行設定就能擋下異常流量。本文從 Leaky Bucket 演算法的原理講起,搭配圖解逐一拆解 limit_req_zone 的 key、zone、rate 與 limit_req 的 burst、nodelay、delay 等參數,並比較三種常見模式的差異,最後給出實戰設定範例與 503 監控建議。

使用GitHub Actions自動部署服務到自己的伺服器

使用自己的伺服器部署服務的情況下,利用GitHub做CI/CD有很多方式,例如使用定期執行每隔一段時間就上GitHub看有沒有新版本要編譯部署、透過Webhooks由GitHub通知伺服器上來拿最新的程式碼編譯部署,本文使用GitHub Actions,在儲存庫更新、收到Pull Request等情況下由GitHub Actions自動執行Workflow,自動打包原始碼、編譯、上傳到遠端伺服器、呼叫遠端腳本重啟服務。

使用Linux Shell Script,每天自動刪除或定期備份超過N天的日誌檔案

Linux上有很多日誌檔案,通常會依照日期一天產生一個log檔案,時間久了會越來越佔空間。你可能只想保留3天內的、5日內的、一週內的,或是30天一個月內的日誌檔案。本篇文章教學如何寫一個Shell Script定期清理日誌檔,透過Shell Script搭配Crontab自動執行,要把日誌檔刪除或是移到別的硬碟、別的網路硬碟備份都可以。

在Windows使用IIS、Apache、Nginx申請免費SSL/TLS憑證,自動從Let’s Encrypt更新

本文將教學如何在Windows上申請Let’s Encrypt的SSL/TLS憑證,讓網站擁有HTTPS連線的機制。有時候為了讓各種後端語言同時存在,會在Windows上先安裝Apache或Nginx網頁伺服器,再反向代理到伺服器上的PHP、ASP、Java、NodeJS、Django等AP Server。因此在Windows上使用IIS(Internet Information Server)、Apache、Nginx申請憑證的方法都包含在文章內,一起讓瀏覽器網址列上面顯示有鎖頭的HTTPS吧。