MENU

用Nginx反向代理,后端Web如何获取真实客户端IP

• 2021 年 01 月 06 日 • Linux技术

利用nginx反向代理,后端Web如何获取真实客户端ip

一、nginx反向代理nginx,后端的nginx该如何配置才能获取到客户端的真实IP地址呢。

1.首先需要在nginx代理服务器上的配置文件nginx.conf上的 location 中添加一行参数:

proxy_set_header  X-Real-IP  $remote_addr; 

重启nginx服务

2.对后面的nginx进行配置

vim /usr/local/nginx/conf/nginx.conf 加入下面参数:

set_real_ip_from 192.168.88.133 ;

#ip为nginx代理服务器的ip地址,这一行需要加在http内,但要在server外

重启nginx服务

以上配置就可以在后端nginx服务器上查看客户端的真实IP地址了。

二、nginx反向代理apache

httpd-2.2版本

1.在代理服务器上nginx的配置和反向代理nginx的配置是一样,参考1-1,这里就不再赘述;

2.配置apache

vim /usr/local/apache2/conf/httpd.conf 找到如下

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

将此行中的 '%h'修改成 ‘%{X-Real-IP}i'

重启nginx服务即可;

httpd-2.4版本

vim /usr/local/apache2/conf/httpd.con 找到

“#LoadModule remoteip_module modules/mod_remoteip.so”

把前面的“#”去掉,再在</IfModule>下一行加入如下两行:

RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1 

再找到下面两行

LogFormat "%h  %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common

修改成如下(红色的'%a'是加入的):

LogFormat "%h %a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %a %l %u %t \"%r\" %>s %b" common

重启httpd服务即可(日志中会出现个IP,第二列是为客户端真实IP);

三、nginx反向代理tomcat

1.在代理服务器上nginx的配置和上面反向代理nginx/apache的设置是一样的。

2.配置tomcat

vim /usr/local/tomcat/conf/server.xml

找到

 pattern="**%h** %l %u %t &quot;%r&quot; %s %b" /> 

基本上都在最后面

%h 修改成 %{X-Real-IP}i

重启nginx和tomcat 即可。(其实tomcat和apache的修改的地方是一样的,只是配置文件不同)

总结:nginx反向代理web集群时,nginx的配置方式只有一种,只需要增加 proxy_set_header X-Real-IP $remote_addr 这一行参数,后端的WEB只需要修改相应的配置文件就可以获取到客户端真实的IP地址了!

返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码