专栏首页MyPanda的学习笔记nginx配置学习--反向代理篇

nginx配置学习--反向代理篇

通常情况下,我们访问互联网的时候,这个交互过程类似下图所示:

反向代理示意图

这里主要讨论服务器端的情况,在上图中,服务端侧的Server Proxy 就是一个反向代理服务器。

反向代理的好处是:

A. 对internet上的用户来说,屏蔽了后端服务器的真实地址,在一定程度上保证了后端服务器的安全;

B. 通过反向代理,后端可以设置很多的服务器一起提供相同的服务,从而增大后端服务器的业务承载能力;

但事物都是具有两面性的,对于服务器来说,反向代理提供了上述两条好处,同时也带来了如下不方便的地方:

  1. 服务器如何才能获得用户的真实访问IP ? (这里的IP指用户端的public IP, 因为在目前IPV4为主流的网络环境中,用户的上网设备获得的IP基本都是私有IP, 用户请求发出后,经过的第一个公有IP就是这里所谓的‘用户真实IP’)
  2. 用户的请求如果经过了多层反向服务器的代理,那么如何记录这个请求到底都被哪些代理服务器处理过?

remote_addr就是客户端的真实IP。 如果使用了反向代理,很明显无法通过remote_addr来获得client的真实IP,但是如果我们在client所遇到的第一个反向代理中获取该remote_addr的值,并保存到某一个变量中,那么后续可以通过访问这个变量来获得真正的client 的IP,这个变量就是 http_x_real_ip, 所以我们获取用户真实IP地址的做法通常是: 在第一个反向代理中配置: proxy_set_header X-Real-IP remote_addr ,在server中使用 http_x_real_ip的方式来引用,从而获得用户的真实IP地址。 至此,我们就解决了: 获取用户真实IP的问题 以及 获取最后一跳的反向代理地址的问题。

http_x_forwarded_for 的第一个值,应该就是client的IP, 因为此时reverse proxy1和client 属于client-server 模式,而reverse proxy1充当了server的角色; 而前面讲了,获取客户端的IP一般是通过 $http_x_real_ip来获取,那是否也可以通过 $http_x_forwarded_for的第一个值来获取呢?一般不建议这样做,因为用户发送请求的时候,可以通过伪造http头,从而使得$http_x_forwarded_for的值不可靠,所以用 $http_x_real_ip来获取更可靠,因为$remote_addr是无法通过构造http的head 来伪造的 作者:My熊猫眼 链接:https://www.jianshu.com/p/ba78cf434eb7 来源:简书

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 文件丢失?损坏?兼容性问题?到底是什么导致了错误

    在日常的维护中,免不了和文件打交道,文件涉及的问题有很多类,这里讨论: 文件丢失,损坏,兼容性问题。 而对于文件丢失导致的问题一般比较容易定位,而文件损坏,特...

    qsjs
  • ldd命令排查文件crash的问题

    ldd用来输出二进制可执行文件或者库文件的依赖;它本是一个script, 并不是binary 文件,其本质上只是设置了环境变量: D_TRACE_LOADED...

    qsjs
  • pycharm 入门基础配置

    pycharm是python的IDE 工具,这个工具很强大,之所以强大,所以对于其配置也可以很复杂,作为一个pycharm的小白,以下的基本的使用是必需的,然后...

    qsjs
  • 用Go开发可以内网活跃主机嗅探器

    源码相关: https://github.com/timest/goscan 文章关键词 go/golang gopacket 抓包 pcap/libpcap...

    李海彬
  • [备忘]liunx下shell脚本通过IP授权方法

    IP=$(curl http://ip.6655.com/ip.aspx -x122.225.117.181:80)

    繁花云
  • Zynq-7000 rgb2ycbcr IP的创建与使用

    IP(Intellectual Property)在嵌入式FPGA设计中,指的是某些设计好的模块,分为软件模块和硬件模块。这些模块,一般都是已经测试好,所有功能...

    FPGA开源工作室
  • cdn+cos完美结合

    所以从流量的费用上来计算,最理想的状态(cdn缓存住所有数据,cos数据不进行更新),每GB可以节省0.29元。 当然,这只是极特殊情况;那么看下最坏的情况,...

    Mr.Du
  • NAT 穿透原理浅浅说(一)

    本篇文章也是综合和参考了些网络上和文献里的一些资料(文中没有对引用处进行标记,请见谅)。写本文的目的就是,用自己的语言描述了这个过程,同时也在描述过程中加入了一...

    杨明亮
  • 都说IP当道,看看游戏中IP是如何建设的

    IP建设是一个要素众多,适用领域广泛的话题,而我今天要分享的是它在游戏领域中经常会被关注的两个模块:人设与世界观。 这里有两本很有趣的书,左侧这一本叫《完美人...

    腾讯大讲堂
  • Stack栈

    又称堆栈,它是运算受限的线性表,其限制是仅允许在一端进行插入和删除操作。按照先进后出(First In Last Out )的原则存储数据

    羊羽shine

扫码关注云+社区

领取腾讯云代金券