0
在Python(Django)中,我需要一种方法来检测请求的来源,传统上我使用Python来检测客户端IP,但是,在我的生产环境中,我的客户端服务器使用AWS与负载平衡器,所以我需要一种方法来检测请求从DNS来像即Python得到如何检测公共DNS?
公共DNS:ec2-11-11-11-48.eu-north-2.compute.amazonaws.com
有没有一种方法来检测服务器的公共DNS从客户端即对IP我这样做:
def get_client_ip(request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR')
return ip
class IpAuthentication(Authentication):
def is_authenticated(self, request, **kwargs):
return get_client_ip(request) in SETTINGS.ALLOWED_IPS:
所以我问的是:是有办法确保我的客户端请求来自特定的AWS实例吗?
您已经评价过购买在AWS上的静态IP的可能性? http://aws.amazon.com/articles/1346 –
将无法正常工作我使用负载平衡器+其他原因我的意思是我有一个IP,但它改变,所以不能用于验证。我确定有一种方法可以使用boto来验证客户端是否在同一个实例上? – Prometheus
不能真正了解你的架构。如果EC2实例调用您的django服务,我没有看到负载均衡器的角色。 –