【发布时间】:2020-02-20 02:24:18
【问题描述】:
我正在制作 Aqueduct 服务器。我想知道监控日志和提供基于位置的一般内容的客户端请求的 IP 地址。
在 Aqueduct 中,我看不到如何获取 IP 地址。
我本来想说我尝试了 X、Y 和 Z,但没有成功,但我刚刚找到了答案,所以我将在下面添加。
【问题讨论】:
我正在制作 Aqueduct 服务器。我想知道监控日志和提供基于位置的一般内容的客户端请求的 IP 地址。
在 Aqueduct 中,我看不到如何获取 IP 地址。
我本来想说我尝试了 X、Y 和 Z,但没有成功,但我刚刚找到了答案,所以我将在下面添加。
【问题讨论】:
在您的控制器中,您可以从 Request 获取 IP 地址。
String ipAddress = request.connectionInfo.remoteAddress.address;
请注意,如果您的服务器在 nginx 代理后面运行,那么您必须配置 nxinx 以将真实 IP 转发到 Aqueduct。为此,您可以将带有远程地址的 X-Real-IP 标头添加到服务器块中的代理 API 位置。
location /api {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8888;
proxy_http_version 1.1;
}
然后在 Aqueduct 中,您可以从原始标头中获取 IP 地址:
String ipAddress = request.raw.headers['x-real-ip'].first;
更多信息在这里:
【讨论】: