简介
首先,为了服务的安全,不需要用户直接可以访问服务器,因为我的这个服务原本就不是针对多人服务的。所以,我需要我指定的部分人可以访问,这样就能够避免别人攻击和没有原则的访问了。这时就需要使用到代理服务器,代理分为正向代理和反向代理。如何理解正向代理和反向代理呢?
正反代理的概念
没理解正向代理之前,我们想理解一下什么是代理。举个例子:比如我们去商店买花,而商店的花呢?是从花棚里运过来的,我们不知道花是从哪进的,只知道在这个花店能够买很多各种各样的花。花店的角色就是代理,我们可以通过花店能够购买各种各样的花,花店是为客户服务的,我们并不需要花是从哪进的。反之,花棚的花农不知道这些花是谁买走的,只知道这个花店进了各种各样的花,这时花店针对客户就是正向代理,花店针对花农就是反向代理。正向代理的对象是客户端,反向代理的对象是服务。
环境
- www.wulaoer.org 10.211.55.143
- wulaoer.org 10.211.55.145
正向代理演示
首先,我们安装了两个nginx服务器,这里我假如我的www.wulaoer.org这台服务器是代理(角色花店),我的wulaoer.org服务是服务段(角色花农)。我现在直接访问我的代理服务器wulaoer.org是没有问题的,我们设置正向代理服务器,应该是本地通过www.wulaoer.org代理,能够获取到wulaoer.org的数据,现在直接访问肯定是能够访问的,看下面的图片。
我先在wulaoer.org上做一下限制,只允许www.wulaoer.org访问wulaoer.org。现在wulaoer.org的nginx配置文件中修改,客户端IP不是10.211.55.143的IP,返回403.
- location / {
- if ( $remote_addr !~* "^10\.211\.55\.143") {
- return 403;
- }
- root /opt/app/demo/html;
- index index.html index.htm;
- }
重启nginx之后,我在本地使用浏览器直接访问wulaoer.org服务就会出现403的错误。
这时,我们可以尝试使用浏览器加代理的方式访问,你会发现不管是访问www.wulaoer.org,还是访问wulaoer.org返回的数据都是www.wulaoer.org。这个不是我们想要的,我们需要访问wulaoer.org的时候能够获取的是wulaoer.org,而不是www.wulaoer.org。
下面我在www.wulaoer.org服务上做一下域名解析,这个解析不一定就是服务端的IP,也可以是8.8.8.8.
- resolver 10.211.55.145;
- location / {
- proxy_pass http://$http_host$request_uri;
- }
添加之后,重启一下nginx继续尝试,在浏览器设置代理地址为www.wulaoer.org的IP,端口nginx默认的80.访问成功。
下面是添加代理的方法
如果想给客户端设置一下认证,可以尝试使用htpasswd给nginx添加用户信息,这样使用代理需要用户认证了。
反向代理演示
我们上面理解了,花店针对花农就是反向代理,用户不需要知道花是从哪进的,只需要这个店有这中花就行了。客户的喜好不一样,购买花的种类也不一样,所以可能购买的几种花是好几个花农提供的。在这个测试里,我们可以理解为,nginx可以根据用户的不同请求,从不同的服务器上返回不同的数据给客户端
还接着上面的例子,客户端通过代理www.wulaoer.org请求到服务端wulaoer.org服务器上了,但是www.wulaoer.org后面不止一个wulaoer.org服务,可能还有wulaoer.org1,wulaoer.org2,wulaoer.org3等等,可能使用的端口不一样,我们需要根据用户的不同请求跳转到不同的服务端上。
我现在服务端开了两个不同的nginx端口,81,82.然后让代理端指定过去。
- upstream wulaoer {
- server 10.211.55.145:81;
- server 10.211.55.145:82;
- }
- ................................
- location / {
- proxy_pass http://wulaoer;
- }
重启代理段nginx,你会发现你请求的数据一会跳到81端口,一会跳到82端口,这就是针对nginx的反向代理。
分享到微信朋友圈
微信扫一下
将本文分享至朋友圈
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏