沉冰浮水

沉冰浮水

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

「Docker」Nginx 反代探究

日常跑题的開始#

以前偶然にRSSerpent/RSSerpentというプロジェクトを見つけました。RSSHub と同じような位置づけで、Python を使用しています。RSSHub とは異なり、すべての「ルール / ルート」をコードファイルにインポートする必要はありません。RSSerpent は「プラグイン / モジュール」のインポート方式を選択しました。

作者は国慶節の間にプラグイン開発のドキュメントを補完しましたが、「環境構築」の山を越えた後、2 つのルールを書くことができました。(そのうちの 1 つは公式のルートに対するものです)

しかし、開発とデバッグの間にコンテンツを取得して 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はそれぞれ80443server {}内でインポートされます。

実際には、複数の 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 コンテナにマッピングするか、既存のコンテナを再起動すれば OK です。

したがって、https://getrss2021.xyz/rss/を使用して、構築した RSSHub インスタンスにアクセスできます。

結論:

実際の例では、upstream モジュールを使用しなくても問題ありませんが、すべての「可能性」を手順に書き起こすことは現実的ではありません。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。