在 apache/tomcat 设置 (mod_jk) 后面获取 Vaadin 中的 IP 地址总是给出服务器的 IP 地址

Getting the IP address in Vaadin behind an apache/tomcat setup (mod_jk) always gives the server's IP address

使用推荐的 Vaadin 代码在前面使用 apache 而 tomcat 后面使用 mod_jk 的设置中获取 IP 地址总是会导致获取服务器的 IP 地址:

Page.getCurrent().getWebBrowser().getAddress();

我发现了 this snippet,这解释了这是因为连接来自 Apache,这是有道理的,但该解决方案也不起作用。

因此我的问题是,当 tomcat 服务器使用 mod_jk 在 apache 后面时,如何在 Vaadin 8 中获取实际用户的 IP 地址?

String header = VaadinService.getCurrentRequest().getHeader("x-forwarded-for");
if(header == null || "".equals(header)
    return "";
return InetAddress.getByName(header).getHostAddress();

最好进行空字符串检查,以防出现任何 NullPointerException 问题。