Javaは真のIPソリューションを取得できませんでした。
問題
最近はブログの閲覧量を書く時に、同じIPで文章を見ても5分間で更新しないというロジックを設計しました。サーバー側でユーザーの実際のIPを得る必要があります。コードはこう書きます。
解決策
最後にnginxエージェントインターフェースを発見した時は、IPを取得する構成が必要です。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
最近はブログの閲覧量を書く時に、同じIPで文章を見ても5分間で更新しないというロジックを設計しました。サーバー側でユーザーの実際のIPを得る必要があります。コードはこう書きます。
public static String getRealIp(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
String unknown = "unknown";
if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
発見されたIP総172の先頭のIPは、ローカルローカルエリアネットワークのIPです。私のプロジェクトはまたdocker布です。これはdocker内部のIPを連想します。解決策
最後にnginxエージェントインターフェースを発見した時は、IPを取得する構成が必要です。
location ^~ /api {
proxy_pass http://127.0.0.1:8110/;
proxy_read_timeout 90;
# IP
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect default;
}
上の面の配置をプラスして、問題は解決します!以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。