我在运维dragonos社区的服务器的时候,发现存在这样一个现象:
网关/WAF服务器反代到MINIO业务服务器上的请求,minio获取不到真实客户端ip,导致上传文件预签名失败。
网络结构如图(网段是瞎编的,真实业务网段我怎么会写在这里):
为了解决这个问题,我反复确认了WAF、网关配置里面,关于XFF的设置是正确的,传递给业务服务器的XFF里面包含了客户端ip.
但是为什么minio没能获取到真实ip呢?思来想去,发现问题出在了业务服务器本地的nginx,它没能从XFF里面读取客户端真实ip,并设置到remote_addr变量里面。
因此只需要在业务服务器的nginx.conf里面(注意这是nginx的全局配置文件,不是站点配置)的http{}块里面,添加:
set_real_ip_from 172.16.0.1/32;
real_ip_header X-Forwarded-For;
设置之后,执行nginx -s reload重载配置,然后发几个请求,并且查看访问日志:
tail /var/log/nginx/access.log
就能看到,客户端ip已经正确设置了。
欢迎关注我的公众号“灯珑”,让我们一起了解更多的事物~