A long time ago I have described how to check external IP address using ssh, so today I will display remote address using Nginx web server.
Use the following virtual host configuration to simply return the remote address in the response body.
server { server_name _; location / { default_type text/plain; set $response_body "X-Real-IP: $remote_addr\n"; if ($http_x_forwarded_for) { set $response_body "${response_body}X-Forwarded-For: $http_x_forwarded_for\n"; } if ($http_x_forwarded_proto) { set $response_body "${response_body}X-Forwarded-Proto: $http_x_forwarded_proto\n"; } if ($http_x_forwarded_host) { set $response_body "${response_body}X-Forwarded-Host: $http_x_forwarded_host\n"; } if ($http_x_forwarded_server) { set $response_body "${response_body}X-Forwarded-Server: $http_x_forwarded_server\n"; } return 200 $response_body; } }
Use browser or curl utility to check IP address directly.
X-Real-IP: 172.16.0.111
Use browser or curl utility to check IP address via NAT. Notice that the remote address will point to the NAT machine.
X-Real-IP: 172.16.0.1
Use browser or curl utility to check IP address via proxy.
X-Real-IP: 172.16.0.102 X-Forwarded-For: 172.16.0.1 X-Forwarded-Proto: http X-Forwarded-Host: 172.16.0.102:80 X-Forwarded-Server: 172.16.0.102
Sample virtual host configuration that will proxy traffic to the <a href="http://172.16.0.101" rel="nofollow">http://172.16.0.101</a>
address.
server { server_name _; location / { proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host:$server_port; proxy_set_header X-Forwarded-Server $host; proxy_pass http://172.16.0.101; } }