Nginx 允许访问日志的自定义日志格式——现在我正在记录 http_x_forwarded_for 并且它工作正常。
问题是我的错误日志只显示了 LB IP。在谷歌搜索并阅读他们的文档后,似乎 error_log 不支持自定义格式,仅设置日志级别(信息、警报、通知、警告等)。
有什么解决方法或模块可以用来解决这个问题吗?
为了完整起见,我的设置是:
Amazon ELB -> 运行 nginx 作为反向代理到 php-fpm 7.0 的实例池
我在 Google Cloud (HTTPS) 负载均衡器后面使用 nginx 进行反向代理,所以我添加了 X-Forwarded-For
标头,以便后端可以提取客户端(浏览器)IP。
今天早上我注意到10.x.x.x
日志中有一个IP,这怎么可能?
nginx reverse-proxy x-forwarded-for private-ip google-cloud-platform
ELB 设置为接受公共 HTTPS (443) 连接并将它们作为 HTTP (80) 发送到 EC2 实例。
EC2 实例运行需要知道用户 IP 地址的 IIS 应用程序。根据我在本网站和其他地方读到的所有内容,ELB 应该将该信息存储在名为“X-Forwarded-For”的标头中。无论出于何种原因,ELB 似乎都没有将该特定标头传递给 IIS(或者 IIS 正在将其剥离?)。
知道我可能做错了什么吗?
我已经配置了remoteip 并检查它是否确实已加载。Remoteip.conf 也会被加载。我通过在以下(正确的)配置中引入格式错误的 IP 来检查后者:
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 127.0.0.1 10.10.0.1 10.10.0.2
Run Code Online (Sandbox Code Playgroud)
现在,当最终用户加载时,我可以验证是否看到X-Forwarded-For
值为10.10.255.100的标头,这是正确的。然而REMOTE_ADDR
PHP 中的变量仍然是负载均衡器的 IP。
根据关于这个主题的每个教程,此时应该可以正常工作。
昨天,我们受到了到达我们的网络服务器后端 (apache2) 的 DDoS 攻击。前端由到网络服务器的 haproxy 负载平衡连接组成。在 apache 的 access.log 上,我们看到来自两个 ip 的数千个请求,几个小时后我们意识到那些是假的/欺骗的,而不是实际的 ip。
为澄清起见,我们使用“137.137.136.136”的 ip 进行了“curl GET /”,实际上这就是我们在博客中看到的 ip(假的)
现在,在我们使用 nginx 作为反向代理的另一个集群中,更改/制作 X-Forwarded-For 标头不起作用。意思是,即使您在特定标头中输入随机 ip,nginx 仍会将正确的 ip 传递给后端网络服务器?
这与haproxy有关吗?
任何人都可以确认精心制作的 X-Forwarded-For 标头可以通过 haproxy 吗?
为什么这不会发生在 nginx 中?
你如何防止这种情况?
nginx ×3
amazon-elb ×2
haproxy ×2
apache-2.4 ×1
http-headers ×1
iis ×1
log-files ×1
private-ip ×1