出于安全原因,有时需要通过IP阻止用户。就我而言,我想在(SQL)数据库中管理IP黑名单。我想我可以根据Action Composition处理过滤器部分,但为此我需要用户的IP。
那么,我怎样才能获得用户的IP?
PS:应用程序在nginx代理后面运行。
答案 0 :(得分:8)
如果你的游戏! app是nginx(或任何其他反向代理)的后面,request.remoteAddress()
只会返回你的nginx主机的IP地址。为了检索客户端的真实IP,您应该在nginx的proxy_pass配置中具有以下内容:
location / {
proxy_pass http://play-app:9000;
proxy_set_header X-Real-IP $remote_addr;
}
这会将客户端IP作为参数添加到标题
doc:Nginx
然后在你的游戏中!应用程序,你会像这样检索它:
request.headers.get("X-Real-IP") //In Java
request.headers.get("X-Real-IP") //In Scala
答案 1 :(得分:7)
现在可以使用Play 2.0.2 + :RequestHeader.remoteAddress()
Java:
String ip = request().remoteAddress();
斯卡拉:
Action { request =>
val ip = request.remoteAddress()
}