AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 486334
Accepted
X-Istence
X-Istence
Asked: 2013-03-10 15:38:05 +0800 CST2013-03-10 15:38:05 +0800 CST 2013-03-10 15:38:05 +0800 CST

nginx with real_ip -- 记录客户端 remote_addr 和代理地址

  • 772

我在多个负载平衡代理后面设置了一个 nginx 实例,我正在使用real_ip它来获取 remote_addr 中的客户端 IP 地址,以便由我的 Python 应用程序进行处理。

但是,在我的日志中,我想记录实际发出请求的代理服务器,但$remote_addr现在已被覆盖,而且我找不到任何表明已制作副本的内容。

我怎样才能做到这一点?

nginx
  • 3 3 个回答
  • 19230 Views

3 个回答

  • Voted
  1. Best Answer
    michaelg
    2015-12-19T23:10:44+08:002015-12-19T23:10:44+08:00

    自您发布此问题后,您的设置可能已更改,但我遇到了同样的问题,并且终于有了可用的解决方案。我会把它贴在这里以防谷歌将其他人带到这个页面。

    正如@Michael Hampton♦ 在他对我自己版本的这个问题的回答中指出的那样,nginx 已将变量添加到Real_IP 模块。它保留 的原始值,允许您使用/记录原始客户端的 IP 和将实际请求发送到 nginx 的服务器的 IP。截至 2015 年 11 月,这已添加到版本 1.9.7。$realip_remote_addr$remote_addr

    • 7
  2. Andrei Mikhaltsov
    2013-03-12T03:18:55+08:002013-03-12T03:18:55+08:00

    如果您想在 nginx 端或应用程序内部登录,真的不知道吗?

    对于 nginx 端,您可以$http_x_forwarded_for在 nginx log_format 定义中使用,如下所示:

    log_format main '$remote_addr - $remote_user [$time_local] [$msec] '
                    '[$request_time] "$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
    
    • 2
  3. Lukas
    2013-03-10T15:53:41+08:002013-03-10T15:53:41+08:00

    该模块本身似乎不支持该功能。但是,反向代理(主要使用 real_ip)可能会提供包含代理 IP 地址的 HTTP 标头字段。

    不幸的是,您无法检查地址是否已被重写,因此未通过启用 real_ip 的代理连接的客户端可以伪造标头字段。

    检查您代理的文档,也许您可​​以使用 HTTP 标头字段作为 IP 地址。

    • 0

相关问题

  • Gzip 与反向代理缓存

  • nginx 作为代理的行为

  • Nginx 学习资源 [关闭]

  • 提供 70,000 个静态文件 (jpg) 的最佳方式?

  • 在 Apache、LightTPD 和 Nginx Web 服务器上提供 PHP 5.x 应用程序的现状?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve