Whenever an application is behind some reverse proxies, you need to configure it properly to get the "real" IP address for the client and some other important information about the request.
Configuring the trusted proxies can be done easily from the front controller:
Or via the configuration (as of 2.3):
framework: trusted_proxies: ['220.127.116.11']
setTrustedProxies() method works with IPv4 and IPv6 addresses, and as
of Symfony 2.3, it also supports the CIDR notation, which is really useful
when you have one or more reverse proxies with dynamic IP addresses (like for
instance the Elastic Load Balancers of Amazon EC2). And of course, you can
mix-and-match all notations in one call:
Request::setTrustedProxies(array('192.0.0.1', '10.0.0.0/8', 'fc00::/7'));
That might seem like a small addition, but one that is really useful when managing big websites.