File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Servlets and the fly likes Problems geting the request sender IP address Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of RabbitMQ in Depth this week in the Open Source forum!
JavaRanch » Java Forums » Java » Servlets
Bookmark "Problems geting the request sender IP address" Watch "Problems geting the request sender IP address" New topic

Problems geting the request sender IP address

Frederico Zapelini

Joined: Jun 02, 2004
Posts: 3
I�m using apache as a proxy in port 80, so when it receives a request it forward the request to Jboss in the same machine. I have a servlet that gets the request sender IP address, but instead of geting the real IP adrress it gets the local valid address (my apache/Jboss server). In my action I use the method request.getRemoteAddr(). I also try to use request.getHeader(headerName) and I found some thing very intresting:

java.util.Enumeration enum = request.getHeaderNames();
while(enum.hasMoreElements()) {
String headerName = (String) enum.nextElement();
String headerValue = request.getHeader(headerName);
System.out.println("-----------------" + headerName + " : " + headerValue);

After runing this code I get the output:

-----------------accept : image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/, application/, application/msword, */*
-----------------referer : "Url"
-----------------accept-language : pt-br
-----------------content-type : application/x-www-form-urlencoded
-----------------accept-encoding : gzip, deflate
-----------------user-agent : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
-----------------host : "host name"
-----------------content-length : 99
-----------------connection : Keep-Alive
-----------------cache-control : no-cache
-----------------cookie : JSESSIONID=CD2572BA90ED1C220A2DE648C6B5E293

As you can see the request does not have the REMOTE_HOST or HTTP_X_FORWARDED_FOR, it only lists those fell headers. But if I use request.getRemoteAddr() it returns the local valid IP address and not the real request sender IP address. Why my lopp did�t list all the http headers, including REMOTE_HOST??? So the question is:

Is there a configuration at Apache so when it act as a proxy my action can get the real request sender IP address?
Can I use another method or way to get the user IP address?

Somebody please help!!!
[ April 26, 2006: Message edited by: Frederico Zapelini ]
Sarath Mohan
Ranch Hand

Joined: Mar 17, 2001
Posts: 213
How do you set up Apache as Proxy server? If you set it up as a web server and you access this server from some other machine in the network, surely u will get remote IP

Sarath Mohan
I agree. Here's the link:
subject: Problems geting the request sender IP address