nginx配置x-forwarded-for头部 本地用tomcat起了一个j2ee的应用,然后又起了一个nginx做反向代理。 nginx.conf: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
nginx配置x-forwarded-for头部本地用tomcat起了一个j2ee的应用,然后又起了一个nginx做反向代理。 nginx.conf:
这里配置了nginx的监听端口为50001使用了proxy_set_header来配置nginx转发的头部操作。 其中如下配置就是针对xff的: 其中$proxy_add_x_forwarded_for变量的值是当前包的x-forwarded-for变量和remote-addr变量,使用逗号隔开。 所以上面的命令就是把当前的包的x-forwarded-for的值设置为x-forwarded-for和remote-addr的连接。 这样这个包转发给下游时,下游就有了这台nginx服务器的ip地址。 当client第一次请求nginx服务器时,nginx拿到的x-forwarded-for为null,remote-addr就是client的实际地址,所以第一次的转发的xff值就只有client的ip地址,转发的nginx的地址是在remote-addr里。 下一台nginx服务器会把第一台nginx服务器的地址填入xff。 所以当一台服务器收到一个包时,上一台服务器的地址并不在xff里面,必须通过remote-addr拿到。 Controller:
本地ip为192.168.43.33。 然后我先使用了手机访问了nginx域名:192.168.43.33:50001/ly 显示:
这里192.168.43.1是手机的ip,127.0.0.1是nginx的ip。且通过x-real-ip可以获取到真实ip。 在使用一个crul命令:
显示:
这里客户端就是本机,所以会在xff后面添加一个127.0.0.1。也是符合预期的。 |
2023-01-09
2022-08-10
2022-08-26
2022-08-26
2022-03-01