Jac*_*ack 3 asp.net asp.net-mvc nlog
我正在使用 NLog 进行日志记录。我需要记录打开网站的用户的 IP 地址。
为此,我使用了aspnet-request-ipNLog的属性。文档在这里:https : //github.com/NLog/NLog/wiki/AspNet-Request-IP-Layout-Renderer
我在 NLog 配置中的布局现在如下所示:
layout='"${longdate:universalTime=true}","${level}",${aspnet-request-ip},"${message}"'
Run Code Online (Sandbox Code Playgroud)
问题是 - 记录的 IP 地址是托管网站的机器的 IP。但我需要打开/请求网站的用户的 IP。我需要登录请求/打开网站的 IP。
我怎样才能做到这一点?或者为什么aspnet-request-ip要记录主机 IP 地址,而不是用户/客户端 IP 地址?
如果您使用的是负载均衡器(在本例中如此),则请求 IP 将是负载均衡器的 IP。本质上,您正在收到负载均衡器的请求,因此这是发件人的 IP。
所以我这个案例你需要:
${aspnet-request-ip:CheckForwardedForHeader=true}
Run Code Online (Sandbox Code Playgroud)
这将获得 X-Forwarded-For 标头的 IP,这是负载均衡器发送客户端 IP 的事实标准。请参阅MDN 上的 X-Forwarded-For
X-Forwarded-For (XFF) 标头是事实上的标准标头,用于识别通过 HTTP 代理或负载均衡器连接到 Web 服务器的客户端的原始 IP 地址。当客户端和服务器之间的流量被拦截时,服务器访问日志仅包含代理或负载均衡器的 IP 地址。要查看客户端的原始 IP 地址,使用 X-Forwarded-For 请求头。
注意:不要为无负载平衡的情况启用 CheckForwardedForHeader,因为用户可以通过发送该标头来发送 IP。
查看文档
| 归档时间: |
|
| 查看次数: |
705 次 |
| 最近记录: |