首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >清漆ERR_TOO_MANY_REDIRECTS

清漆ERR_TOO_MANY_REDIRECTS
EN

Server Fault用户
提问于 2020-02-25 09:28:16
回答 1查看 2.4K关注 0票数 0

在Centos WebPanel中,我使用Nginx > Varnish > Apache,phpERR_TOO_MANY_REDIRECTS只出现在Wordpress主页上,它会消失,然后回到我的网站上。这种期刊行为提供了线索,认为这是一个与缓存相关的问题。

代码语言:javascript
复制
Status 301 Moved Permanently
Server nginx/1.16.1
Date Mon, 24 Feb 2020 15:46:29 GMT
Content-Type text/html; charset=iso-8859-1
Content-Length 230
Connection keep-alive
Keep-Alive timeout=60
Location https://thinkbalm.com/
X-Varnish 98379 131369
Age 13
Via 1.1 varnish (Varnish/5.2)
X-Cache HIT from Backend

将域的配置设置为Nginx > Apache,从而消除Varnish解决了问题,但随后我丢失了Varnish。因此,我进行了大量的搜索,问题似乎如下:

Varnish和SSL - HTTPS终止代理后的WordPress

不幸的是,Varnish不支持SSL。因此,我们需要终止SSL连接,并使用Varnish和您的WordPress站点使用简单的HTTP。

Varnish不仅不支持SSL,还不知道SSL终止,只使用主机名和请求的URL作为标识符。

我们触发了一个问题:强制HTTPS重定向到一个不知道初始请求协议的应用程序上,可能会导致浏览器中的ERR_TOO_MANY_REDIRECTS错误。

当页面的HTTP版本存储在缓存中时,就会发生这种情况。输出不过是一个301重定向到HTTPS版本。但是,因为Varnish和WordPress不知道SSL终止,所以您将在重定向循环中结束,直到浏览器抛出此错误为止。

我们怎样才能解决这个问题?

我尝试将其添加到wp-config文件中:

代码语言:javascript
复制
 if($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'){
   $_SERVER['HTTPS'] = 'on';
   $_SERVER['SERVER_PORT'] = 443;
 }

我还尝试将其添加到.htaccess中:

代码语言:javascript
复制
SetEnvIf X-Forwarded-Proto "https" HTTPS=on
Header append Vary: X-Forwarded-Proto


  RewriteEngine on
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
  RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

所有这些都解决不了这种情况。

有什么想法吗?

EN

回答 1

Server Fault用户

发布于 2020-02-25 09:44:31

整个解决方案,我写了一篇博文,取决于X-Forwarded-Proto头的存在。

  • 没有它,HTTPS环境变量就不能在Apache中设置。
  • 如果没有它,Varnish就不能执行缓存变体。

我最初的假设是,这个标题没有被正确设置。但有个简单的方法可以找出:

Please向我发送以下Varnish命令的输出:

代码语言:javascript
复制
varnishlog -g request -q "ReqUrl eq '/'"`

我假设这发生在主页上,所以命令对主页上的请求进行筛选。

Please还确认是否存在影响缓存变化的自定义 sub vcl_hash <#>configuration。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1004457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档