首页 > 系统相关 >nginx反向代理实现获取用户真实ip

nginx反向代理实现获取用户真实ip

时间:2024-11-05 16:57:34浏览次数:1  
标签:real http log ip nginx 反向 IP

参考资料:https://www.cnblogs.com/mzhaox/p/11214747.html

用户真实ip是223.193.x.x,发送请求,请求经过Nginx A->Nginx B -> 最后到达后端服务
nginx A的关键配置:

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;

    keepalive_timeout  65;
    client_max_body_size 10000m;


    server {
        listen  6794;

        root /mnt/dist;
        location /myapi/ {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass  http://xxx.xxx.xxx:xxx;  # nginx B的地址

         }

nginx B的关键配置:

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" zz "$http_x_real_ip"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
    # gzip
    include /etc/nginx/conf.ext/*.conf;

    client_max_body_size 1g;

    server {
        listen  5111;

        set_real_ip_from yyy.yyy.yyy.yyy;  # NGINX A的IP 。如果nginx B前面有多个nginx,可以把多个nginx的IP都写上
        real_ip_header X-Forwarded-For;
        real_ip_recursive on;

        root /mnt/dist;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

1.使用realip模块后,$remote_addr输出结果为真实客户端IP,可以使用$realip_remote_addr获取最后一个反向代理的IP;
          2.real_ip_headerX-Forwarded-For:告知Nginx真实客户端IP从哪个请求头获取;
          3.set_real_ip_from 172.25.78.0/24:告知Nginx哪些是反向代理IP,即排除后剩下的就是真实客户端IP
          4.real_ip_recursive on:是否递归解析,当real_ip_recursive配置为off时,Nginx会把real_ip_header指定的请求头中的最后一个IP作为真实客户端IP;
          当real_ip_recursive配置为on时,Nginx会递归解析real_ip_header指定的请求头,最后一个不匹配set_real_ip_from的IP作为真实客户端IP。 

 

标签:real,http,log,ip,nginx,反向,IP
From: https://www.cnblogs.com/testzcy/p/18528343

相关文章

  • [DMY]2024 NOIP 模拟赛 Day 4
    不会暴搜不会差分约束不会三维DP不会根号分治不会卡常……赛时电脑没网,换了一台。T1看不懂题面,还以为是\(n-x\),然后有人给我说根据题目名称可以推断是\(n\%x\)。……[从现在开始到T2,我写完了,但是被人用手势删了,没保存,不想重新写了,所以就这样了]……T2赛后发现差分约束......
  • ipv6解析导致 blackbox_exporter 采集http监控项超时问题
    排查过程打开blackbox_exporter后台http://127.0.0.1:9115/找到监控项对应的DebugLogs点开查看日志:Logsfortheprobe:ts=2024-11-05T06:38:25.081157873Zcaller=main.go:304module=http_2xxtarget=http://img.xxx.cn/test.jpglevel=infomsg="Beginningprobe"p......
  • Rockylinux9 配置静态IP地址
    像往常一样,安装完操作系统后,准备配置网络,直接cd到网络配置文件夹中,发现之前配置的参数文件没有了,只剩下一个readme,神奇,打开看看 大致总结下来就是:主要变化是从Network-Scripts转为用NetworkManager和key文件,而不是基于 ifcfg 的文件。在RockyLinux9中,NetworkManag......
  • java毕业设计下载(全套源码+配套论文)——基于java+JSP+MyEclipse的网上订餐系统设计与
    基于java+JSP+MyEclipse的网上订餐系统设计与实现(毕业论文+程序源码)大家好,今天给大家介绍基于java+JSP+MyEclipse的网上订餐系统设计与实现,更多精选毕业设计项目实例见文末哦。文章目录:基于java+JSP+MyEclipse的网上订餐系统设计与实现(毕业论文+程序源码)1、项目简介2......
  • 解决vite resolve alias的typescript报错
    报错如下: tsconfig.json配置如下:tsconfig.app.json需要添加一下配置:"compilerOptions":{"include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src"],"exclude":["no......
  • 手机ip地址怎么切换外省
    在现代社会中,随着网络技术的不断发展,手机已经成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐,手机都扮演着重要的角色。然而,在某些特定情况下,我们可能需要将手机IP地址切换到外省,以便访问特定地区的网络资源或服务。本文将详细介绍如何通过不同的方法实现手机IP......
  • Linux系统中对ipmi 配置管理
    IPMI是一种开放标准的硬件管理接口,用户可以通过其来监控或获取服务器的状态,服务器托管在机房时我们可以通过远程管理卡安装和管理系统。安装相关组件,主要是OpenIPMI,并启动服务:#yuminstallOpenIPMIOpenIPMI-develOpenIPMI-toolsOpenIPMI-libs-y#serviceipmistart#......
  • vue前端项目部署的一点小tip
    一个典型的前后端分离项目,前端分用户入口和管理员入口,一般希望这样部署:https://mydomain.com/   普通用户入口https://mydomain.com/admin/ 管理员入口关键就是在vite.config.ts里要这么指定base:base:'./'这样build出来的文件,不管放在哪个项目下面都可以正常运行,......
  • NOIP
    noip考前专训(来自弱省弱校的挣扎)T1专训38题,在一个小时内写出正解。P11186三目运算体现出我不会递归的牛逼情况。照着题目模拟,类似对一段区间进行染色。因为递归成一颗二叉树形状,故从最深处返回的下标为紧挨下一次递归开始的下标。点击查看代码#ifdefONLINE_JUDGE......
  • ipad协议853版技术分析
    微信网页版的通信协议,很多人都想自己写了个程序,实现微信的登录、初始化、读取联系人列表、发送微信、接收微信等功能,其实大家在网上看一下也有不少人做过这方面的内容。我主要用的工具是HTTPAnalyzer,我认为这个是目前分析http/https协议最好用的工具了,比wireshark和fiddler都清......