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

简介

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

正向代理

反向代理

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

通常是网站或服务器节点

FTP服务器

为什么用?

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

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

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

怎么用?

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

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

有哪些政策或规则?

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

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

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

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

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

什么应该阻止用户代理?

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

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

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

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

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

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

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

如果攻击者/黑客能够访问服务器,我的服务会发生什么变化?

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

当我想将服务域名从更改为时,我服务的用户会怎么样?

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

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

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

如何设置反向代理?

Nginx服务器

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

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

......server {listen <%= ENV["PORT"] %>;server_namelocalhost;//Any context-paths with "/api" will be served by api-qwerty.comlocation /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-paths with "/ui" will be served by ui-qwerty.comlocation /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/apiProxyPassReverse /api http://api-qwerty.com/apiProxyPass /ui http://ui-qwerty.com/uiProxyPassReverse /api http://ui-qwerty.com/ui....

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

作者:佚名

相关文章推荐

Nginx 反向代理趣解HAProxy配置为代理与负载均衡器之实践

一文看懂Web服务器、应用服务器、Web容器、反向代理服务器区别与联系