.png)
私の現在の設定は次のとおりです。私はdocker(ルートレスインストール)を使用しており、クリプトパッド(Node.js を使用)、Nginx をリバース プロキシとして使用します (免責事項: これまで Nginx を使用したことはありません)。Cryptpad と Nginx は両方とも別のコンテナーで実行されています。静的ファイルを提供するために、Cryptpad のすべての静的ファイルが存在するボリュームを作成し、Nginx コンテナーにマウントしました (読み取り専用)。問題は、一部のコンテンツがこの方法では提供できないことです。大きな blob ファイルは、Cryptpad コンテナーからのみアクセスできる外部ディレクトリに保存されます (これには理由があります)。そのため、Nginx にこのファイルへのリクエストを Cryptpad の Node サーバーに proxy_pass するように指示しようとしましたが、このリダイレクトを定義する方法がわかりません。
私の設定:
- Nginx コンテナの名前: nginx
- Cryptpad コンテナの名前: cryptpad
- ノードサーバーのポート: 3000
- 両方のコンテナは同じ(カスタム)ブリッジネットワークに接続されている(そのため、コンテナ名でアクセスできる)
サーバーのNginx-Config(関連セクションに短縮。全コードは以下から引用)ここ)
[...]
location ^~ /block/ {# modified block location to test proxy (is accessed more easily than blob)
add_header Cache-Control max-age=0;
#try_files $uri =404;# original code
try_files http://cryptpad:3000/$request_uri =409;# arbitrary error code to differentiate from normal errors
}
[...]
location @node {# used to proxy all unhandled locations to node
proxy_pass http://cryptpad:3000;
}
try_files /www/$uri /www/$uri/index.html /customize/$uri @node;
しかし、/block/ にアクセスするとサーバーは 409 を返すため、リダイレクトは機能しませんでした。また、proxy_pass http://cryptpad:3000/$request_uri/;
またはproxy_pass http://cryptpad:3000;
(結果は 404)と も試しましたtry_files @node =409;
。
それで、この内部リダイレクトを機能させる方法、または少なくとも 2 つのコンテナー間のトラフィックを監視する方法を知っている人はいますか?
答え1
さらに試してみたところ、うまくいく設定が見つかりました。例のproxy_passesの他の行をコピーしただけで、/block/の定義は次のようになります。
location ^~ /block/ {
add_header Cache-Control max-age=0;
proxy_pass http://cryptpad:3000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_hide_header Cross-Origin-Resource-Policy;
#add_header Cross-Origin-Resource-Policy cross-origin;
proxy_hide_header Cross-Origin-Embedder-Policy;
#add_header Cross-Origin-Embedder-Policy require-corp;
}