多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 关于正向代理和反向代理 ## 什么是正向代理? 用浏览器访问google时会被block,于是你在香港搭建了一台代理服务器,让代理帮助我们请求google.com。 ### 流程 1. client访问代理服务器 * 代理服务器ip * 代理服务器端口 * 原始服务器域名 2. 代理服务器根据1收到的链接与原始服务器通信 3. 服务器返回网页 4. 代理服务器打包3中的网页返回client ### 使用场景 国外搭建服务器,位于国内的client通过shadowsock访问原始服务器。 ## 什么是反向代理 ### 流程 1. client访问代理服务器 2. 代理服务器将请求分发到不同的子Server 3. 子Server响应代理服务器 4. 代理服务器响应clinet ### 使用场景 高并发网站使用的负载均衡,拨打10086由不同的客服提供服务 ## 总结 正向代理中代理的对象是client,反向代理中代理的是Server ![](https://box.kancloud.cn/534288412fb3931f2b9daa8daeae7511_520x670.png) # Server获取Client的ip Server通过三个变量获取Client的ip,REMOTE_ADDR,HTTP_VIA,HTTP_X_FORWARD_FOR。 当client使用正向代理时,这三个变量的值的规则 1. 透明代理 * REMOTE_ADDR = proxy ip * HTTP_VIA = proxy ip * HTTP_X_FORWARD_FOR = client ip 2. 匿名代理 * REMOTE_ADDR = proxy ip * HTTP_VIA = proxy ip * HTTP_X_FORWARD_FOR = proxy ip 3. 混淆代理 * REMOTE_ADDR = proxy ip * HTTP_VIA = proxy ip * HTTP_X_FORWARD_FOR = random ip(随机) 4. 高级匿名代理 * REMOTE_ADDR = proxy ip * HTTP_VIA = not datermined * HTTP_X_FORWARD_FOR = not datermined ## 总结 当server想要获取client的ip时,根据client是否使用正向代理会得到不同的结果。透明代理时通过HTTP_X_FORWARD_FOR可以获取客户端ip,匿名代理时只能获取代理ip了。