Django在AWS Elastic Beanstalk负载平衡环境中无法获取用户IP

史考特

我在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章