我很擅长开发,我将构建一个代理服务器用于工作。我不确定构建代理服务器的是什么,我能找到的任何东西只是告诉我安装一些东西并设置一个;但我希望能够建立自己的。我将在Scala工作,那究竟是什么制作一个,它做了什么?
答案 0 :(得分:1)
有两种主要的代理:
这两种代理可能有也可能没有以下增值功能(这是一个样本,而且几乎没有详尽无遗):
我将假设您要构建HTTP / HTTPS转发或反向代理。
它是反向代理吗?
一个或多个应用程序服务器前面的HTTP负载平衡器是反向代理。在这种情况下,后端服务器是固定的,基于标头选择(主机是流行的),或者在负载平衡时从池中选择。后端可以使用相同的协议,也可以使用自定义负载均衡协议。对于你的情况,我建议使用相同的协议,除非有非常令人信服的理由不这样做。
它是转发代理吗?
最终用户和Internet之间的HTTP代理是转发代理。在这种情况下,代理建立与所请求域的新连接,并发送其自己的HTTP请求,可能直接复制用户的头和内容。代理可以根据域名,URL,IP地址或内容选择允许或拒绝请求。
两种代理基本上都做同样的事情:接受入站请求并代表请求者将其发送到目的地。
简单代理的基本过程如下:
要使反向代理工作,目标需要是代理进程的参数(配置,代码等)。
为了使前向代理工作,请求者需要有一个表达目的地的协议。有很多协议:HTTP。 HTTP CONNECT和SOCKS是主要的。在最简单的情况下,客户端通过HTTP连接到代理服务器,并发送他们通常直接发送到目标服务器的相同请求。
一个小说(据我所知)启用的东西是一个反向代理,它接受来自后端的连接。这将允许无法轻易用于攻击安全区域中后端的DMZ。
Kate Madsudaira在开源应用程序架构一书中提供了a good description of what proxies do and their benefits at an architectural level。