Javaは真の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;

}
上の面の配置をプラスして、問題は解決します!
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。