Search code examples
javaapachetomcatvaadinvaadin8

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


Using the recommend Vaadin code to get an IP address in a setup with apache on the front and tomcat behind using mod_jk always results in getting the Server's IP address:

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

I caught this snippet which explains it's because the connection is coming from Apache, which makes sense, but that solution doesn't work either.

Therefore my question is how do I get the actual user's IP address in Vaadin 8 when the tomcat server is behind apache using mod_jk?


Solution

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

    It's best to do an empty String check just in case to avoid any NullPointerException issues.