在测试绕过 Discourse 容器主机上的 Apache2 代理并禁用 Cloudflare 上的强制 HTTPS 重定向以通过 curl 测试纯 HTTP 连接时,我终于在 Cloudflare 上找到了罪魁祸首:
我不确定我们的 VPS 切换和/或 Discourse 从 3.5.0.beta3 升级到 3.5.0.beta4 以及/或者同时在 Discourse 上发生了什么变化,但似乎 Discourse 的 HTML、CSS 或 JavaScript 文档中的某些内容导致 Cloudflare 对嵌入式 URL 的 HTTPS 重写出现问题。看起来不完整和挂起的 curl 请求实际上并没有关联,或者可能有关联。奇怪的是,在浏览器网络选项卡中可以看到 HTML 文档的不完整内容,就好像 HTTPS 重写功能在流经文档时执行了此操作一样。
是否有人有实例和 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 标头,并公开添加的端口。
