nginx 转发后端服务器,后端服务器显示用户端IP地址

Posted 吕正元

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 转发后端服务器,后端服务器显示用户端IP地址相关的知识,希望对你有一定的参考价值。

默认后端服务器只能看到是前端nginx调度器访问的本机

一、修改虚拟主机的配置文件

  设定转发往后端主机的请求报文的请求首部的值;

vim /etc/nginx/conf.d/test.conf 
server {
        listen 80;
        server_name www.test.net;
        root /data/site1/;
        location ~.*\\.(jpg|png|jpeg)$ {
                proxy_pass http://192.168.1.4;

        }
        location /api {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_pass http://192.168.1.6;
        }
        access_log /var/log/nginx/test_net.log ;
}

  nginx 对别人发给它的文件没办法修改,但对他发送给别人的文件可以修改,这里在头部添加一个X-Real-IP

  默认日志里记录的是访问本机的客户端IP地址

二、重启nginx服务器

1 systemctl restart nginx
2 或者
3 nginx -s stop
4 nginx

三、修改后端主机的主配置文件

vim /etc/httpd/conf/httpd.conf 

默认记录的开头是客户端IP地址:(英文输入法下,输入/LogFormat  直接定位到这行)

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

将原来的注释掉,修改为:

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

四、测试访问

curl www.test.net/api -L

五、查看后端日志

"192.168.1.4" 192.168.1.5 - - [08/Jun/2021:11:47:23 +0800] "GET /api HTTP/1.0" 301 231 "-" "curl/7.29.0"
"192.168.1.4" 192.168.1.5 - - [08/Jun/2021:11:47:23 +0800] "GET /api/ HTTP/1.0" 200 31 "-" "curl/7.29.0"

192.168.1.4 是测试服务器地址,192.168.1.5是nginx调度器地址。

 

以上是关于nginx 转发后端服务器,后端服务器显示用户端IP地址的主要内容,如果未能解决你的问题,请参考以下文章

nginx代理转发url接口请求路径到spring boot后端实现真正响应

nginx代理转发url接口请求路径到spring boot后端实现真正响应

nginx反代+varnish缓存+后端LAMP平台集群实现

nginx http_realip_module 被高级安全防护设备代理后,获取用户端真实IP,并通过真实IP负载均衡转发到后端应用

Nginx反向代理实例与负载均衡实现(全网详解)

nginx 基础3 反向代理