从我自己的答案 ,我不得不用$http_hostreplace$host来解决我的问题…
但这是安全的吗?
好像所有的$http_host正在做的是从头部公开整个HOST 。 这里的解释还不清楚
有没有人有任何想法为什么$http_host更危险?
编辑
其实,这是我的第三次编辑…我应该重新考虑我的立场后阅读此: https : //stackoverflow.com/questions/1459739/php-serverhttp-host-vs-serverserver-name-am-i-understanding -the-MA
我不确定nginx如何对此做出反应,但是你们认为nginx是否也会和Chris的testing结果一致:既不安全?
在什么情况下,使用$ http_host的时候可以想办法利用吗? 此外,为什么去除端口号码很重要?
我明白,有可能妥协networking,并发送一些Host: fake or old ip ,然后执行重新绑定攻击,因为我在别处读取?
$host只是$http_host有一些处理(剥离端口号和小写)和一个默认值( server_name ),所以当使用$http_host时候,客户端发送的Host头不会less“暴露”。 这个虽然没有危险
需要检查应用程序中的所有标题值。 虽然nginx可以对你的web应用程序做一些保护,但是你不应该只依靠它。
我相信有可能通过$ host和$ http_host编写一个容易遭受主机头滥用的web应用程序,但这不是避免在nginxconfiguration中使用它的原因。