1.代理
代理也被叫做网络代理,是一种比较特殊的网络服务,允许一个终端(通常指客户端)通过这个服务与另一个终端(通常指服务器端)进行非直接的连接。
代理协议
主要是两种:
-
Socks
-
HTTP
2. 正向代理
正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从目标服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转发请求,将获得的内容返回给客户端。正向代理的情况下,客户端必须要进行一些特殊的设置才能使用。正向代理需要主动设置代理服务器ip或者域名进行访问,由设置的服务器ip或者域名去访问内容并返回,正向代理是代理客户端,为客户端收发请求,使真实客户端对服务器不可见。
springboot设置代理
@Bean
public RestTemplate restTemplate() {
SimpleClientHttpRequestFactory clientHttpRequestFactory = new SimpleClientHttpRequestFactory();
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("hostnam", 8080));
clientHttpRequestFactory.setProxy(proxy);
return new RestTemplate(clientHttpRequestFactory);
}
2.1 使用场景
1. VPN
代表“虚拟专用网络”,这是一项保护互联网连接和在线隐私的服务。比如为了保护公司的隐私安全,设置公司的网络只有通过 VPN 登录后才能进行接入。再比如翻墙,要访问某国外网站,该网站无法在国内直接访问,但是我们可以访问到一个代理服务器,这个代理服务器可以访问到这个国外网站。用户对该国外网站的访问就需要通过代理服务器来转发请求,并且该代理服务器也会将请求的响应再返回给用户。
2. 动态 IP 代理
动态 IP 代理最常用的场景就是网络爬虫,因为大多数网站为了避免被频繁的访问和抓取,会限制访问 IP,如果使用同一个 IP 进行访问,那么很快就会不限制无法访问。因为我们需要 动态 IP 服务器帮我们转发请求,从而避免被目标服务器检测出是在频繁抓取。
3. 隐藏客户端 IP
隐藏客户端 IP 就是我们经常电影中看到的,黑客通过代理手段,隐藏自己的真实 IP,避免被其它发现自己的实际 IP,从而查到黑客实际所在地址。
3. 反向代理
反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。对于客户端来说,反向代理是作为服务器端的代理,不是作为客户端的代理,用于隐藏真实服务端,并且客户端不需要进行任何设置。
3.1 使用场景
1. 堡垒机
堡垒机是一种安全审计系统,它是一个跳板服务器,它管控着各种想登录服务器的权限或者是操作,能够监督员工们的操作,对员工们的行为起到约束监控作用。通过堡垒机我们可以管控员工对服务器的访问,保护真实服务器的安全。
2. nginx
反向代理服务器可以做负载均衡,根据所有真实服务器的负载情况,将客户端请求分发到不同的真实服务器上。
3. 隐藏服务器真实ip
对客户端隐藏服务器的ip地址,防止恶意攻击服务器。
4. 提高访问速度
反向代理服务器可以对静态内容及短时间内有大量访问请求的动态内容提供缓存服务,提高访问速度
5. 提供安全保障
反向代理服务器可以作为应用层防火墙,为网站提供对基于web的攻击行为(例如DoS/DDoS)的防护,更容易排查恶意软件等。还可以为后端服务器统一提供加密和SSL加速(如SSL终端代理),提供HTTP访问认证等。
总结
正向代理是客户端的代理,服务器不知道真正的客户端是谁;反向代理是服务器的代理,客户端不知道真正的服务器是谁
正向代理一般是客户端架设的;反向代理一般是服务器架设的
正向代理主要是用来解决访问限制问题;反向代理则是提供负载均衡、安全防护等作用。二者都能提高访问速度。
参考: