mmmmmm...... ... Well, so far I have always assumed that Tomcat itself has always made this effort (assuming that it is enabled to do so in the connector), so that when I execute the method I'm just retrieving the value. I'm I wrong?
In this case when using Nginx+Tomcat, I assume that Nginx already made the effort to get the remoteHost value as well, so Tomcat just receives it and I just need to invoke the method to get it. Maybe I'm wrong here. I really appreciate your help! > -----Original Message----- > From: Jose María Zaragoza [mailto:demablo...@gmail.com] > Sent: martes, 08 de septiembre de 2015 03:59 p.m. > To: Tomcat Users List <users@tomcat.apache.org> > Subject: Re: ServletRequest.getRemoteHost() not working when Tomcat is > behind Nginx (Nginx as a reverse proxy) > > 2015-09-08 22:10 GMT+02:00 Brian <brian...@emailbb.com>: > > Hello Jos�, > > > > That�s a nice idea indeed (A VERY NICE ONE!), but an extra work because of > the networking effort. I'm talking about a site that can get hundreds of > requests > per second. > > But you would want to execute ServletRequest.getRemoteHost() in every > request , right ? That was your question. > I don't know how is the Tomcat 6's ServletRequest.getRemoteHost() > implementation , but I guess it's not very different to my code > > Regards > > > > > > > > Since Nginx has access to this information, I bet there must be a way to > > pass it > to Tomcat the same way the IP address can be passed! But for some reason I > can't find it and I have spent quite some time looking for it. > > > > Thanks a lot! > > > > > >> -----Original Message----- > >> From: Jose Mar�a Zaragoza [mailto:demablo...@gmail.com] > >> Sent: martes, 08 de septiembre de 2015 02:58 p.m. > >> To: Tomcat Users List <users@tomcat.apache.org> > >> Subject: Re: ServletRequest.getRemoteHost() not working when Tomcat is > >> behind Nginx (Nginx as a reverse proxy) > >> > >> 2015-09-08 21:22 GMT+02:00 Brian <brian...@emailbb.com>: > >> > Hi, > >> > > >> > > >> > > >> > First of all, I'm using: > >> > > >> > - Tomcat 7.0.50 > >> > > >> > - Nginx 1.4.7 > >> > > >> > > >> > > >> > When I use Tomcat alone, ServletRequest.getRemoteHost() > >> > > >> > (http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getRe > >> > moteHost() > >> > > >> > <http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getRe > >> > moteHost())> ) works fine. But when Tomcat is behind Nginx (Nginx > >> > acting > >> > as a reverse proxy), it does not. > >> > > >> > Just to make myself clear, this is the architecture I'm talking about: > >> > > >> > > >> > > >> > Client -----> Nginx (as a reverse proxy) -----> Tomcat. > >> > > >> > > >> > > >> > The problem is that ServletRequest.getRemoteHost() gives me the > hostname of > >> > the proxy itself (meaning Nginx) and not that of the client. > >> > > >> > > >> > > >> > I was able to get the IP address of the visitor (and not that of the host > >> > where Nginx is running) doing this on Nginx: > >> > > >> > > >> > > >> > server { > >> > > >> > listen 80; > >> > > >> > server_name www.acme.com acme.com; > >> > > >> > location / { > >> > > >> > proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; > >> > <------- This line did the trick > >> > > >> > proxy_set_header Host $http_host; > >> > > >> > proxy_pass http://152.53.163.220:80/; > >> > > >> > } > >> > > >> > } > >> > > >> > > >> > > >> > And then inspecting the content of the "X-Forwarded-For" header in my > >> > java > >> > programming. But what do I do to obtain the remote hostname? I guess it > >> > is > >> > something similar, but I haven't found a solution. What I want to know > >> > is: > >> > > >> > - Exactly what configuration do I need in Nginx > >> > > >> > - Exactly what do I do from Java to obtain the value. > >> > >> Why not do you perform a reverse DNS lookup by code ? Something like : > >> > >> InetAddress addr = InetAddress.getByName("xx.xx.xx.xx"); > >> String host = addr.getCanonicalHostName(); > >> System.out.println(host); > >> > >> You only need to extract 'X-Forwarded-For' header from request and > >> execute that piece of code > >> > >> > >> Regards > >> > >> > > >> > > >> > > >> > Thanks in advance, > >> > > >> > > >> > > >> > Brian > >> > > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > >> For additional commands, e-mail: users-h...@tomcat.apache.org > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > > For additional commands, e-mail: users-h...@tomcat.apache.org > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org