Apache2 プロキシを Discourse コンテナホストでバイパスしようとしていたとき、Cloudflare で強制 HTTPS リダイレクトを無効にして curl で通常の HTTP 接続をテストしていたところ、ついに Cloudflare で原因を特定しました。
VPS の切り替えや Discourse 3.5.0.beta3 から 3.5.0.beta4 へのアップグレード、またはそれと同時に Discourse で何かが変更されたのかは定かではありませんが、Discourse の HTML、CSS、または JavaScript ドキュメントの何かが、Cloudflare の埋め込み URL の HTTPS 書き換えを妨げているようです。部分的に中断した curl リクエストは実際には関係なかったのか、あるいは関係しているのかは不明です。ブラウザのネットワークタブで、HTTPS 書き換え機能がドキュメントをストリーミングしながら処理しているかのように、HTML ドキュメントの部分的なコンテンツが表示されるのは奇妙です。
誰かインスタンスと Cloudflare アカウントを持っていて、これをテストできる人はいますか?一般的な問題なのか、それとも私たちの特定のインスタンス/セットアップに関連しているのか?
ちなみに、プロキシのバイパスと HTTP をテストするために、コンテナ内の Nginx 設定を次のように手動で調整すると、完全に機能します。
root@dietpi-discourse:/var/www/discourse# cat /etc/nginx/conf.d/outlets/server/10-http.conf
listen unix:/shared/nginx.http.sock;
set_real_ip_from unix:;
listen 8080;
listen [::]:8080;
listen 8443 ssl;
listen [::]:8443 ssl;
http2 on;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_certificate /shared/fullchain.cer;
ssl_certificate_key /shared/dietpi.com.key;
ssl_session_tickets off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:1m;
もちろん、HTTPS リダイレクトと HSTS ヘッダーを削除し、追加されたポートを公開することが重要です。
