我不能想出Cloudfront將發佈這些重定向的情況。
看來可能發生的情況是您的服務器本身正在發佈302重定向,因爲它不喜歡它從Cloudfront獲取的Host:
標頭。
Host:
CloudFront將該值設置爲與請求的對象關聯的源的域名。
— http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html
的Cloudfront然後返回重定向到瀏覽器。
Cloudfront還可以緩存這樣的重定向,因此在解決問題時請注意。響應頭應說明是否CloudFront的去了產地爲特定的回覆:CloudFront的
X-Cache: Miss from cloudfront
...還是擔任了從緩存中的請求。
X-Cache: Hit from cloudfront
兩種可能的方法來解決此問題:
如果你的遺留代碼反應以負面方式Host:
頭,你也許可以重新配置Web服務器來修改在代碼能夠看到它之前的值,所以重定向不會發生。或者,你可以使用外側的東西,像Varnish或HAProxy這樣的反向代理引擎(其中我已經觸及elsewhere)。在HAProxy的,一個簡單的例子:
reqirep ^Host:\ .* Host:\ expected-domain.example.com if { hdr(host) -i unexpected-domain.example.com }
在形式上類似於這樣的規則將在所有傳入的請求,其中該頭存在,它應該讓你的遺留代碼幸福Host: expected-domain.example.com
更換Host: unexpected-domain.example.com
頭,避免重定向。在遺留系統之前運行HAProxy不會產生很大的負載,因爲代碼非常緊密。我所有的遺留網絡系統現在都面向這些系統,使我能夠比其他方式更容易操作和修改行爲。
感謝您的回答。你的假設是正確的。我在這裏檢查,重定向來自我的服務器。問題是有很多遺留代碼,我不能只改變重定向。 –
我已經爲答案添加了一些可能有用的建議。 –
偉大的建議!我會試試HAProxy。 –