我在AWS Elastic Beanstalk上部署了一个Django应用程序。 Django配置为仅为特定主机名(ALLOWED_HOSTS)提供请求。如果请求中的主机信息不匹配,它将引发返回500响应代码,没关系。
但是,我注意到我收到了很多这样的信息,无论是通过IP地址发送请求,还是通过其他域名发送请求。因此,我想配置设置,以便负载均衡器拒绝请求,如果它在标头信息中没有正确的主机名。
这可能吗?我一直试图在AWS控制台中查看设置,但找不到任何有关如何执行此操作的信息。我可以修补EC2实例以拒绝这些请求,因此它根本不会到达Django,但我想尽早停止它。
现在流动:
If Not invoicelist.Contains(Object where InvoiceNo = dbobjM.DataReader.GetInt32(0)) Then
invoicelist.Add
End If
我想要的是什么:
Client -> Load Balancer -> EC2 instance -> Nginx -> Django
<-500 error- Django
答案 0 :(得分:5)
无法配置Elastic Load Balancer来过滤掉请求。
如果允许的连接基于IP地址,则可以使用VPC ACL仅允许来自特定IP地址的连接。所有其他人将在ELB级别接收失败的连接。
如果您允许的连接不是基于IP地址,您可以将CloudFront与Amazon Web Application Firewall(WAF)结合使用。
可以将WAF配置为按IP地址,URL,查询字符串,标题等在Web请求级别进行过滤。