某些用户可能会使用透明代理访问你的网站,透明代理在转发请求的时候会经过X-Forwarded-For请求头带上真实的请求IP地址,默认状况下,Play会解析这个请求头并赋值给request.remoteAddress,进而致使在Action中经过request.remoteAddress获取到的IP地址是一个内网地址,例如192.168.1.2。这些内网地址对地域统计来讲没有任何意义,因此索性就关闭X-Forwarded-For解析,直接获取代理服务器地址。nginx
很简单,只须要在application.conf配置文件中增长一行配置便可关闭全部X-Forwarded-For解析.服务器
play.http.forwarded.trustedProxies = []
若是使用Nginx作反向代理服务器,修改/etc/nginx/nginx.conf,告诉Nginx添加相应的请求头:app
http { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_http_version 1.1; }
play.http.forwarded.trustedProxies=["::1", "127.0.0.1"]
play.http.forwarded.trustedProxies=["192.168.0.0/24", "::1", "127.0.0.1"]
192.168.0.0/24表示整个C类地址段,即192.168.0.0-192.168.0.255。网站
play.http.forwarded.trustedProxies=["0.0.0.0/0", "::/0"]