反向代理服务器:为什么用,怎么用,如何用?

图片

简介


我们大多数人都熟悉一些代理服务器:

  • 正向代理

  • 反向代理

在访问资源的客户端(用户代理)的上下文中可以看到“转发”“反向”。资源可以(不限于):

  • 通常是网站或服务器节点

  • FTP服务器

为什么用?


让我们来举一个名叫QWERTY的样板组织之例,并且基础架构团队已经定义了如下的策略:

  1. 任何访问互联网的人都须遵守组织中定义的规则。

  2. 访问基础结构中托管服务的任何人都不得直接访问服务节点。

怎么用?


作为员工,你将如何访问公司资源?

对于方案1,你需要知道:

  • 有哪些政策或规则?

  • 你被允许访问互联网吗?(允许也意味着您指定(或)你的IP地址(或)其他过滤条件)

对于个人(或)应用程序而言,这将难以跟踪可在组织内访问的互联网上的每个资源。

相反,如果在服务器中定义了这样的东西,并且只允许记住服务器名称和端口号,那该怎么办呢?转发代理服务器是这样做的。来看下图:


图片

代理服务器会将你的请求转发到预期的节点或网站。如果资源不符合组织策略,它也会拒绝提供请求。前端代理的配置倾向于组织的基础架构团队如何决定以下参数(不限于):

  1. 什么可以转发到网站/相应节点?

  2. 什么应该阻止用户代理?

  3. 通过网络访问资源时消耗的带宽是多少?

由于整个组织的情况各不相同,让我们更多地关注方案2

图片

我们需要知道代表服务器代表服务于您请求的网站/端点的代理服务器。我们举一个例子:

你或你的应用程序想要访问一个节点(例如:http://qwerty.com)

在这种情况下,你知道该网站的域名为qwerty.com,可以通过http协议访问。但是,这完全是从最终用户中抽象出来的。

反向代理的配置倾向于关于以下参数的架构决策(不限于):

  1. 如果我的服务被数以百万计的请求发送垃圾邮件会怎么样?

  2. 如果***者/***能够访问服务器,我的服务会发生什么变化?

  3. 当基础架构更新时,我的服务会发生什么。这可能与硬件(或)操作系统补丁有关?

  4. 当我想将服务域名从http://qwerty.com更改为http://asdfgf.com时,我服务的用户会怎么样?

  5. 当依赖服务关闭时,我的服务会发生什么变化?

  6. 当我的服务端点必须通过https访问但无法支付“N”个SSL证书时会发生什么?

像上面这样的问题将让我们选择反向代理服务。

如何设置反向代理?

Nginx服务器


我们来看如下Nginx服务器的配置。打开nginx.conf文件(如果是第一次尝试它,请一定进行备份)。

在Server 段location部分,使用服务器端点添加代理转发设置,如下代码。

 ......server {        listen <%= ENV["PORT"] %>;        server_name    localhost;            //Any context-path's with "/api" will be served by api-qwerty.com        location /api {        proxy_set_header       Host api-qwerty.com:80;        proxy_set_header       X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_pass             http://abc-def.ghij-klmn.com;            }        //Any context-path's with "/ui" will be served by ui-qwerty.com        location /ui {        proxy_set_header       Host ui-qwerty.com:80;        proxy_set_header       X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_pass             http://ui-qwerty.com;    }  }

Apache


打开httpd.conf文件。 (如果你是第一次尝试,请先进行备份),你可以添加以下行并根据需要替换上下文路径与节点。

....ProxyPass /api http://api-qwerty.com/apiProxyPa***everse /api http://api-qwerty.com/apiProxyPass /ui http://ui-qwerty.com/uiProxyPa***everse /api http://ui-qwerty.com/ui....


欢迎各在下面的文章评论区中告诉你的看法。


猜你喜欢

转载自blog.51cto.com/15127566/2665364