Nginx 設定 SNI Routing 讓 Reverse Proxy Upstream 自己管理 SSL 憑證

我自己家中的 home lab 是用 Proxmox 安裝的 VM 環境,Proxmox 非常好用,然而有一點非常困擾我:由於我只有一個固定 IP,因此我的不同 domain 都要由同一台 VM 做 reverse proxy。平常這樣用起來沒什麼問題,然而在安裝某些服務,好比 Jitsi、Matrix 時,它會需要存取到 SSL 憑證,因此我得將它放在跟 reverse proxy 同一台 VM 上,否則 Jisti 會讀不到 certbot 產生的憑證。這一直造成我非常大的困擾,直到最近向朋友請教,認識到了 SNI Routing 這項技術。 SNI 全稱 Server Name Indication,是 TLS 的一個擴充協定,會在客戶端進行連線請求時,附帶 domain name 資訊,用途在於多個 domain name 都指向同一個 IP 地址時,讓伺服器得以判斷要使用哪一個憑證進行連線。Nginx 平常的 Virtual Host 就已經有利用 SNI 的技術了,我們接著還要結合 Nginx 的 stream 功能,來轉發 HTTPS 的 TCP 封包。 Nginx 的 stream 模組能重新導向 TCP 或 UDP 封包,類似 port forwarding 但還是有些不一樣,Nginx 的 stream 會改變封包的來源位址,因此還需要一些設定來還原。 註:本文目前還沒有處理好轉發 client IP 的問題。...

September 5, 2022 · 2 分鐘 · wancat

網站建置紀錄

網站建置紀錄 我的網站從 2017 年六月第一次上 GitHub Page,到現在 www.wancat.cc ,也已經半年了,寫下這篇文章紀錄一下架站的方法。 Hexo 我的部落格是用 Hexo 將 Markdown 轉成一個靜態網站的,所以可以部屬到 GitHub Page 或是任何伺服器,我自己現在還留著 https://wancatserver.github.io 避免哪天伺服器發生不測……。那 Hexo 可以多重部屬,我的設定檔大概長這樣。 # _config.yml deploy: - type: git repo: git@github.com:WANcatServer/WANcatServer.github.io.git - type: rsync host: 我的伺服器 ip user: lancat root: /volume2/WANcatServer/www 那我的佈景是使用 Archer,非常好看的一個佈景,那我有做一些小調整:把簡體中文換成繁體,然後將授權地方放上 CC 授權。 cd path/to/blog vim /theme/archer/layout/post.ejs 即可修改模板內容,EJS 也是我之前用過的模板引擎,所以挺快就弄好了。 到 創用 CC 官網 上找你要的授權,就可以複製 HTML 嵌入到網站裡了。可以直接加在 Archer 裡面的 _config.yml # theme/archer/_config.yml # 將 license 改成以下 license: <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="創用 CC 授權條款" style="border-width:0" src="https://i....

January 20, 2019 · 2 分鐘 · wancat