2014-09-22 52 views
1

我有一个客户端在运行CDN时遇到一些500错误。这些错误表明内部重定向过多,我们的研究证实了这一点。客户不想调整他们的内部重定向,并想以另一种方式解决这个问题。10个内部重定向 - 可以提高此限制吗?

根据我的研究,到目前为止,这似乎是一个硬工资帽这不是针对任何一个类型的Web服务器,并在地方,以避免死循环。话虽如此,有什么办法可以提高这个极限 - 例如20个而不是10个?

实施例:

  1. 浏览器>> 9个重定向>>来源200页(9重定向总)
  2. 浏览器>> 9个重定向>>来源可提供自定义404页(1重定向自定义404 - 共10个重定向)
  3. 浏览器>> CDN(自定义规则+1重定向)>> 9重定向>>原点200页(共10重定向)
  4. 浏览器>> CDN(自定义规则+1重定向)>> 9重定向>>源自定义404页面(+1重定向自定义404 - 11重定向总数)

只有实施例4给出了500错误。在不调整重定向配置或删除CDN的情况下,有什么办法可以解决这个问题? (不幸的是,我无法提供更多关于重定向的信息,我的道歉)。

+0

超过10个重定向在链路链错误需要调试一个令人厌烦的努力。即使有5个重定向也是有用的,对于糟糕的设计决策,边界为2_x_。如果你能想象出一个无法通过10级间接解决的情况,我会愿意改变我的立场。 – msw 2014-09-23 00:20:41

回答

1

不幸的是,它是HTTP客户端决定它愿意遵循多少重定向。你看到的限制,从最初在RFC 2068, sec 10.3给出的价格再次出现在RFC 7231, sec 6.4推荐茎:

本规范的早期版本建议最多五个重定向[...]内容开发者需要注意,某些客户端可能会实施这种固定的限制。

this answer可以找到粗略估计有多少重定向将达到浏览器的限制。大多数浏览器允许配置此限制(例如,Firefox正在公开network.http.redirection-limit设置)。

Web服务器则是一个不同的问题:它似乎有阿帕奇为v2.0.452.1之间的RewriteOptions指令的MaxRedirects选项。 LimitInternalRecursion设置似乎已经接管了这一点。我一直无法找到nginx的等效设置。作为最后一点:如果你真的看到了很多内部重定向(即重定向只能在重写引擎中执行,并且不会立即导致真正的HTTP重定向),这可能是一个强有力的指示来修改你的重写规则。

+2

并且添加内部重定向不提供任何应用程序逻辑,因为它们从不触摸应用程序。 – Melvyn 2014-09-23 06:22:03

+0

@Melvyn好点。 – DaSourcerer 2014-09-23 06:47:45

+0

我已经跨Mozilla的文章跌跌撞撞,却没有看到它冗长陈述“内部”重定向,所以不知道这是我一直在寻找的文档。感谢您的输入我的第一次SO查询:) – NNLocke 2014-09-23 17:19:56

1

你需要,你必须修复需要的,而不是试图改变这个星球上的每个浏览器无数内部重定向穷人应用程序逻辑在客户端上留下深刻的印象。

**编辑**

阿帕奇显然有使用RewriteOptions MaxRedirects选项来改变这种服务器端的选项,但我认为你还是会遇到问题与浏览器经常建议用户停止重定向和保释出来..有时甚至在10次重定向之前。

+0

是啊,我想是这样的话,但到处都找不到这种限制被记录,甚至特定的浏览器。你知道我可以提供的任何文件吗? – NNLocke 2014-09-22 21:27:51

+0

只是你知道:MaxRedirects选项已经在[2.0.45](http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#RewriteOptions)中引入,但在[2.1]( http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#RewriteOptions)。 – DaSourcerer 2014-09-23 05:46:00

相关问题