https://www.wulaoer.org/?p=2122
我们要想让nginx能够获取到用户的真实IP就需要在nginx里进行配置,首先我们需要定义一下信任的IP地址,另外需要把ingress获取的字段进行转换,这样就可以了。
set_real_ip_from 10.244.0.0/16; # 定义信任地址 real_ip_header X-Forwarded-For; # 将 X-Forwarded-For 字段包含的 IP 替换原 $remote_addr 值 # 将 $remote_addr 值替换为由 real_ip_header 指令定义的请求标头字段包含地址中最后一个不受信任的地址,即排除配置中定义的信任地址。 real_ip_recursive on;
这里定义的信任地址是pod的地址段,不是server的地址段。把上面的信息可以放在http里也可以放在server里,看自己的情况,因为这个配置是写到基础镜像里的,如果基础镜像在k8s之外有使用建议放在server里。
server { listen 80; set_real_ip_from 173.32.0.0/12; real_ip_header X-Forwarded-For; real_ip_recursive on; .................................... client_max_body_size 100m; client_body_buffer_size 30M; client_header_timeout 120s; client_header_buffer_size 4096k; large_client_header_buffers 4 4096k; proxy_set_header X-Forwarded-For $remote_addr; ...............................................
我的配置,配置后重启一下nginx,即可,在看日志就会发现获取的日志是用户的真实ip地址了。没有了看些别的吧。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏