1. 标准实现的 proxy 会在代理的请求中增加一个 HTTP 头部 X-Forwarded-For,记录源 IP 信息
2. 对于多级 Proxy 代理的,会在 X-Forwarded-For 字段后增加信息,比如X-Forwarded-For: client1, proxy1, proxy2
3. PHP 可以通过 $_SERVER['HTTP_X_FORWARDED_FOR'] 获取该头部字段,然后判断该变量是否存在,再决定是否采取 $_SERVER['REMOTE_ADDR']
4. 也有 apache module 让这一切对编程者更加透明,请参考 mod_extract_forwarded
启动该模块后,可以统一采用 $_SERVER['REMOTE_ADDR'] 了,同时可以通过 $_SERVER['PROXY_ADDR'] 来获取实际连接的 proxy 地址
最新评论