You might try:

environ.get('HTTP_X_FORWARDED_FOR', environ['REMOTE_ADDR'])

See also http://thepcspy.com/read/getting_the_real_ip_of_your_users/

On Thu, 2011-03-03 at 07:43 -0800, lost_rat wrote:
> The variable:
> 
> request.environ['REMOTE_ADDR']
> 
> always returns 127.0.0.1 for all requests when my Pyramid App is
> deployed via Apache using  ProxyPass
> 
> Snippet from httpd.conf:
> 
> <VirtualHost *:80>
> 
>       ServerName www.example.com
> 
>       ServerAlias example.com
> 
> 
>       # ----->>>> this is the line that I found useful:
>       SetEnvIf HTTP_X_FORWARDED_FOR (.*) REMOTE_ADDR=$1
> 
> 
>       ProxyRequests Off
> 
> 
> 
>       ProxyPass / http://localhost:6543/ retry=5
> 
>       ProxyPassReverse / http://localhost:6543/
> 
>       ProxyPreserveHost On
> 
>       <Proxy *>
> 
>               Order deny,allow
> 
>               Allow from all
> 
>       </Proxy>
> 
> </VirtualHost>
> 
> 
> Snippet from a handler:
> 
> from pyramid_handlers import action
> class AcctHandler(object):
>       def __init__(self, request):
>               self.request = request
> 
>       def _getRemoteIP(self):
>               IP = self.request.environ.get('HTTP_X_FORWARDED_FOR')
>               if not IP:
>                       IP = self.request.environ['REMOTE_ADDR']
>               return IP
> 
> Snippet from authentication.py, with intermediate lines excluded:
> 
> class AuthTktCookieHelper(object):
>     def remember(self, request, userid, max_age=None, tokens=()):
>         environ = request.environ
>         if self.include_ip:
>             remote_addr = environ['REMOTE_ADDR']
>         else:
>             remote_addr = '0.0.0.0'
> 
> 
> Are the IP specific restraints or conditions from a client wholly
> useless here, or is there something that I am obviously missing?
> 
> I found this AuthTktCookieHelper function when trying to figure out
> how to set the max_age on a cookie.
> 
> I still have not yet figured out how to simply set the max_age value
> for the cookie, from my login handler function.
> [ remember(self.request, username) ]
> 


-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/pylons-discuss?hl=en.

Reply via email to