我在AWS Elastic Beanstalk中设置了负载平衡的环境,其中部署了Django应用并运行Django-user-sessions。我希望它能够记录用户会话的外部IP地址,但是记录的所有内容都是内部IP。我有另一个没有负载均衡的环境,并且正在收集外部用户IP,因此,我很确定用户IP将被负载均衡器的内部IP覆盖。
我试图安装django-xforwardedfor-middleware,据说该软件会添加request.META['REMOTE_ADDR'] = request.META['HTTP_X_FORWARDED_FOR'].split(',')[0].strip()
到每个请求中,但这并没有解决问题。
我还重写了一个HTTPS引擎,.ebextensions
该引擎未在正常运行的环境中运行,但我认为这不是问题所在:
files:
"/etc/httpd/conf.d/ssl_rewrite.conf":
mode: "000644"
owner: root
group: root
content: |
RewriteEngine On
<If "-n '%{HTTP:X-Forwarded-Proto}' && %{HTTP:X-Forwarded-Proto} != 'https'">
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</If>
我还有其他方法可以尝试让django-user-sessions收集外部用户IP吗?
我发现了问题:问题的定位x_forwarded_for.middleware.XForwardedForMiddleware
。它应该先于user_sessions.middleware.SessionMiddleware
:
MIDDLEWARE = [
...
'x_forwarded_for.middleware.XForwardedForMiddleware',
'user_sessions.middleware.SessionMiddleware', # the django-user-sessions middleware
...
]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句