セキュリティ上の理由から、ユーザーを IP でブロックする必要がある場合があります。私の場合、(SQL) データベースで IP ブラックリストを管理したいと考えています。アクション構成に基づいてフィルター部分を処理できると思いますが、そのためにはユーザーの IP が必要です。
では、どうすればユーザーの IP を取得できますか?
PS : アプリケーションは nginx プロキシの背後で実行されています。
セキュリティ上の理由から、ユーザーを IP でブロックする必要がある場合があります。私の場合、(SQL) データベースで IP ブラックリストを管理したいと考えています。アクション構成に基づいてフィルター部分を処理できると思いますが、そのためにはユーザーの IP が必要です。
では、どうすればユーザーの IP を取得できますか?
PS : アプリケーションは nginx プロキシの背後で実行されています。
あなたの遊びなら!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 がパラメーターとしてヘッダーに追加されます。
ドキュメント: Nginx
そして、あなたのプレイ内で!次のように取得します。
request.headers.get("X-Real-IP") //In Java
request.headers.get("X-Real-IP") //In Scala
Play 2.0.2+で可能になりました: RequestHeader.remoteAddress()
ジャワ:
String ip = request().remoteAddress();
スカラ:
Action { request =>
val ip = request.remoteAddress()
}