如何使用 Nginx 实现反向代理?

  一直在试图整理一些垂直知识点的文章,思前想后,还是先从Nginx着手吧,这里先从代理说起。

  1.何为代理服务器

  代理服务器就是位于发起请求的客户端与原始服务器端之间的一台跳板服务器,正向代理可以隐藏客户端,反向代理可以隐藏原始服务器。

  2.何为正向代理

  正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。

  如下图所示,用户想通过内部服务器(local server)访问互联网服务器(original server),但是又不希望把自己的内部IP地址和源端口暴露到互联网,以免产生安全隐患。因此需要通过代理服务器(设备)proxy-server与互联网上的服务器进行通信。

  正向代理

  3.何为反向代理

  反向代理,代理服务器来接受客户端的网络访问连接请求,然后服务器将请求有策略的转发给网络中实际工作的业务服务器,并将从业务服务器处理的结果,返回给网络上发起连接请求的客户端。

  如下图所示,客户端大龄小鱼想要访问http://www.largeagefish.com,访问请求通过地址解析后,发送到proxy-server,通过代理服务器的反向代理以及负载均衡功能,最终的访问请求通过轮询(暂时只讨论轮询的负载均衡)的方式分发到local-server集群。

  反向代理

  实现方式:

  相对需要配置的nginx.conf文件做个简单的介绍,直接注释到文件中

  下面直接对nginx.conf的配置进行反向代理的改写:

  反向代理实例