奇怪的 301-从 https 重定向到 http 只发生在使用 CF 作为 www 子域上的 /wp-admin 上的代理时

奇怪的 301-从 https 重定向到 http 只发生在使用 CF 作为 www 子域上的 /wp-admin 上的代理时

我在 AWS 上的 EC2 实例上有一个 wordpress 博客,使用 AMI 映像 aws-marketplace/bitnami-wordpress-6.3.2-6-r09-linux-debian-11-x86_64-hvm-ebs-nami-7d426cb7-9522-4dd7-a56b-55dd8cc1c8d0

在 cloudflare 中,blogdomain.com 和www.blogdomain.com转向 EC2 实例,目前我不会强制从“裸”子域重定向到 www 或相反。

网站的大部分功能在 blogdomain.com 和www.blogdomain.com

但是,在 /wp-admin/ 上,我收到了 ERR_TOO_MANY_REDIRECTS,但仅限于 www 子域。在这里,您可以看到对两个域的 curl 请求的结果。

HTTP/2 301 
date: Fri, 03 Nov 2023 18:02:09 GMT
location: http://www.blogdomain.com/wp-admin/
cache-control: max-age=3600
expires: Fri, 03 Nov 2023 19:02:09 GMT
report-to: {"endpoints":[{"url":"removed"}],"group":"cf-nel","max_age":604800}
nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
server: cloudflare
cf-ray: removed
HTTP/2 302 
date: Fri, 03 Nov 2023 18:02:25 GMT
content-type: text/html; charset=UTF-8
location: https://blogdomain.com/wp-login.php?redirect_to=https%3A%2F%2Fblogdomain.com%2Fwp-admin%2F&reauth=1
expires: Wed, 11 Jan 1984 05:00:00 GMT
cache-control: no-cache, must-revalidate, max-age=0
x-redirect-by: WordPress
cf-cache-status: DYNAMIC
report-to: {"endpoints":[{"url":"removed"}],"group":"cf-nel","max_age":604800}
nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
server: cloudflare
cf-ray: removed
alt-svc: h3=":443"; ma=86400

我试图缩小这个范围,/wp-admin/ 处从 https 到 http 的重定向不是由 Wordpress 引起的,事实上,它陷入重定向循环的原因是因为 Wordpress 重定向回 https,而 CF 似乎坚持应该是 http://。

Cloudflare 中已为该域名启用完整 SSL,并且该域名没有处于活动状态的页面规则或工作程序,不会导致从 https 重定向到 http。

如果我添加<ip address> www.blogdomain.com我的 /etc/hosts(从而完全绕过 Cloudflare),它就可以正常工作,不会发生重定向循环,并且我能够在 www-subdomain 上使用管理面板。

因此,无论出于什么原因,这种重定向似乎以某种方式发生在 Cloudflare 中,并且仅适用于 /wp-admin/*,我觉得这毫无意义,因为它设置为提供 https,所以如果有的话,CF 应该从 http 重定向到 https,而不是像现在这样反过来……

我不知道下一步该怎么做,难道真的是 CF 中的某种错误导致了这种情况?我尝试多次查看所有设置页面,但没有找到任何可能导致这种情况的配置。

在调试此问题时,我也多次清除了 CF 缓存。

我将非常感激任何形式的帮助!

答案1

似乎这可能是由我当天早些时候禁用的 Cloudflare 页面规则引起的。该规则对 wp-admin 禁用了 SSL。它似乎滞留在某个缓存中,尽管我在禁用 Cloudflare 缓存后的几个小时内多次清除了该缓存。

不管怎样,周末过后它就起作用了。

相关内容