一、正向代理和反向代理
正向代理类似一个跳板机,代理访问外部资源。例如:我们使用要访问国外网站,但是由于网络限制,我无法正常访问到国外网站,但是我能访问一个代理服务器,而这个代理服务器能访问那个我不能访问的网站。于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。
正向代理 是一个位于客户端和原始服务器( )之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
正向代理的用途:
(1)访问原来无法访问的资源,如
(2)可以做缓存,加速访问资源
(3)对客户端访问授权,上网进行认证
(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
反向代理( Proxy)方式是指以代理服务器来接受上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
通常的代理服务器,只用于代理内部网络对的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。
反向代理的作用:
反向代理服务器通常有两种模型,它可以作为内容服务器的替身,也可以作为内容服务器集群的负载均衡器。
(1)保证内网的安全,可以使用反向代理提供WAF功能,阻止web攻击
大型网站,通常将反向代理作为公网访问地址,Web服务器是内网。 如果您的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在防火墙外部设置一个代理服务器作为内容服务器的替身。代理服务器在安全数据库和可能的恶意攻击之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸攻击成功,作恶者充其量也仅限于访问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有权进行访问。
(2)负载均衡,通过反向代理服务器来优化网站的负载
以在一个组织内使用多个代理服务器来平衡各 Web 服务器间的网络负载。在此模型中,可以利用代理服务器的高速缓存特性,创建一个用于负载平衡的服务器池。此时,代理服务器可以位于防火墙的任意一侧。如果 Web 服务器每天都会接收大量的请求,则可以使用代理服务器分担 Web 服务器的负载并提高网络访问效率。
对于客户机发往真正服务器的请求,代理服务器起着中间调停者的作用。代理服务器会将所请求的文档存入高速缓存。如果有不止一个代理服务器,DNS 可以采用“循环复用法”选择其 IP 地址,随机地为请求选择路由。客户机每次都使用同一个 URL,但请求所采取的路由每次都可能经过不同的代理服务器。
可以使用多个代理服务器来处理对一个高用量内容服务器的请求,这样做的好处是内容服务器可以处理更高的负载,并且比其独自工作时更有效率。在初始启动期间,代理服务器首次从内容服务器检索文档,此后,对内容服务器的请求数会大大下降。
二、nginx的反向代理实践
nginx支持配置反向代理,通过反向代理实现网站的负载均衡。
两个服务器通过nginx反向代理,本例子通过两台虚拟机实现国外的代理服务器,一台虚拟机提供ngxin服务,另一台虚拟机提供两个服务。
nginx负载均衡器:127.0.0.1
:127.0.0.1:8080
:127.0.0.1:8081
配置好后,启动,我这里是直接替换了下的ROOT文件夹的内容,输入上述的ip+端口即可访问到发布的项目了。(分别删除目录下所有文件,新建一个文件夹ROOT,并在该目录下新建index.html)
访问结果:
访问结果:
nginx通过 配置代理站点,实现负载均衡。
启动、关闭、重启Nginx服务器
注意:一定要在nginx.exe文件所在的文件夹下操作。
(1)启动:
H:nginx-1.12.2>start nginx
或H:nginx-1.12.2>nginx.exe
注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中国外的代理服务器,不能进行其他命令操作。
(2)停止:
H:nginx-1.12.2>nginx.exe -s stop
或H:nginx-1.12.2>nginx.exe -s quit
注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。
(3)重新载入Nginx:
H:nginx-1.12.2>nginx.exe -s
当配置信息修改,需要重新载入这些配置时使用此命令。
(4)重新打开日志文件:
H:nginx-1.12.2>nginx.exe -s
测试是否配置成功
经过测试,输入127.0.0.1会访问到下图内容,多次刷新,出现的内容会在下面两图间切换,其实这正是我们上述和容器的结果,测试成功。
可能会遇到的问题(进程关闭失败)
在使用的过程中,你可能会遇到一个很奇葩的问题,就是当关闭命令执行了无数遍,页面却还是可以直接用域名访问。
这个时候就说明你的进程并没有真正关闭,我们可以用命令来查询一下:
cmd中输入: -an | find "0:80"
如果有,说明真的没有关闭这个进程。没有,那就看看是不是浏览器缓存的问题。
针对进程不能正常关闭,可以用如下命令来关闭: /F /IM nginx.exe 或者 /pid 你要关闭的pid /F
参考: