沉冰浮水

沉冰浮水

做最终到的事,成为最终成为的人!
github
bilibili
mastodon
zhihu
douban

「Docker」Nginx 反代探究

日常跑題的開場#

略早之前偶然間看到了RSSerpent/RSSerpent這個專案,定位和 RSSHub 一樣,使用 Python,不像 RSSHub 每份「規則 / 路由」都要在程式碼檔案內引入,RSSerpent 選取了「插件 / 化可拆裝」的引入方案;

雖然作者在國慶期間終於補了波插件開發文件,在翻過了「環境配置」這座大山後也確實寫出了兩條規則;(其中一條是給官方路由的 Pr)

然而明明在開發調試時可以抓取內容並輸出 RSS,可是實際部署出來並不能用的樣子 -_-!;

畢竟是新專案,慢慢等完善吧;

其實另一方面,RSSHub 對我來說還算夠用,最大的問題也並不是規則,而是實例的可用性 —— 比如實例整個掛掉,或者某條規則在該實例上不再可用 —— 即使自建也無法避免;

(昨天發現rss.shab.fun證書過期了,剛看了下到是很快續上了;)

雖然每天都有看,但是某條訂閱好久沒更新了這種情況,對人的敏感性要求太高了;

果然目前最好的方案是這個:

「折騰」GitHub Actions 反代 RSSHub + 多實例輪詢_電腦網路_沉冰浮水

不過之前還是被意料之外的原因波及了:

「小事」Python 的 Docker 鏡像更新了一波_雜七雜八_沉冰浮水

(果然每次都會變成碎碎念.jpg)

正文#

這篇文章的起因是搞了下邊東西;

wdssmq/proxy_nginx: Nginx Docker 化鏡像,適合用於反代;:

↑ 雖然是個程式庫,但是弄完感覺更像是水了篇使用教程,順便帶了個 Git 庫;

README.md裡寫了不少筆記,Docker 化部署 Nginx 環境,外加如何將/etc/nginx/*各種相關的配置以映射的的方式實現自定義,還研究了怎麼配置 SSL 證書;

前邊已經水過的一篇:

Docker 內 php-nginx 的偽靜態相關_電腦網路_沉冰浮水

然後發現把「Nginx 配置反向代理」塞進去感覺會很長;「- 雖然拆出到這裡也很長.jpg -」


需求描述:

已經使用 Docker 部署了一個 RSSHub 實例,跑在默認的1200端口上,想另外部署一個單獨的 Nginx 容器進行反代;

鏡像基於webdevops/php-nginx:7.4,並且提取了/etc/nginx用於自定義映射;

預置檔案比較多,還有很多已經廢棄卻沒刪除的,梳理過包含關係後得出總結如下:

nginx/conf.d/檔案內用於放置需要全局引入的檔案,或者說寫在端口監聽外部;

nginx/vhost.common.d/*.conf則分別在80443各自的server {}內部引入;

其實主要是想實現多個 RSSHub 實例反代的,好像設計上並不支持我預想的用法;

按路徑分別寫入下邊配置:

#; nginx/conf.d/5-proxy.conf
upstream rss1200 {
    server getrss2021.xyz:1200;
}
#; nginx/vhost.common.d/5-proxy.conf
location /rss/ {
    proxy_set_header Host $host/rss;
    proxy_pass http://rss1200/;
}

容器相互是隔離的,需要確保*:1200是能訪問到的地址,或者將容器加入同一網路內使用容器名用於尋址;

之後映射進 Docker 容器或重啟已有容器即可;

所以現在用https://getrss2021.xyz/rss/就可以訪問到我搭建的 RSSHub 實例;

結語:

其實就當前示例來說,也可以不使用 upstream 模組,然而把所以「可以」都寫成過程果然也不太現實;

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。