NGINX+tomcat作反向代理之后获取客户端访问ip地址

在简单的tomcat服务器环境下获取访问客户端ip很容易,通过servlet API即可,但是复杂环境下,比如tomcat通过NGINX代理之后就行不通了,获取的永远都是NGINX服务器的ip地址。这时如果要获取客户端ip可以通过NGINX提供的全局变量来实现,下面我通过几个截图来展示:

  • NGINX配置如下:
    NGINX+tomcat作反向代理之后获取客户端访问ip地址_第1张图片
    截图中使用的以$符号开头的都是NGINX的变量,具体有哪些变量可以参考NGINX官网文档,地址: https://nginx.org/en/docs/varindex.html

  • 然后通过访问NGINX代理服务器,NGINX会将它所包含的变量值设置到请求头中,然后在tomcat服务器环境下去解析请求头即可获取远程客户端ip,比如如下访问NGINX的请求:
    这里写图片描述


其中http://192.168.9.142 是NGINX服务器ip地址,tomcat服务器打印结果如下:
NGINX+tomcat作反向代理之后获取客户端访问ip地址_第2张图片


说明: 其实不论是单tomcat简单环境,还是与其他web服务器(如nginx、apache)整合的环境,获取的客户端ip地址都是不可靠的,在公网上不是谁的电脑都能拥有真实ip的,都是通过代理出去的

你可能感兴趣的:(NGINX)