在 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
问题。
使用推荐的 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
问题。