我有一个应用程序位于Elastic Load Balancer后面的Amazon EC2上。 服务器上有一个特定的URL,只允许指定的IP地址列表发布到该URL。
我已将以下内容添加到我的Web.config中:
<location allowOverride="false" path="mysecureurl">
<system.webServer>
<security>
<ipSecurity allowUnlisted="false">
<add allowed="true" ipAddress="111.111.111.111" />
</ipSecurity>
</security>
</system.webServer>
</location>
当我直接从允许的IP地址发布到服务器的IP地址时,它可以正常工作。
当我从允许的IP地址发布时,通过负载均衡器,它会失败(403:FORBIDDEN)。我假设IIS正在查看负载均衡器的内部IP地址,而不是我的客户端的IP地址。
有什么方法可以让它发挥作用吗?
答案 0 :(得分:1)
客户端IP实际上是通过标头(X-Forwarded-For
)传递的。除了客户端IP之外,此标头可能还包括其他负载均衡器IP。
如果您可以根据标头配置过滤,则应该可以执行您尝试执行的操作。
答案 1 :(得分:1)
通过关注@ datasage的答案,您最终可以做到你想要的。但它并不安全。没有可靠/安全的方法来确定应用层上的客户端IP地址。基于应用层上的IP地址限制访问也是一种不好的做法。 有关(不多)更多信息,请参阅this answer。