反向代理(Reverse Proxy)方式是通过代理服务器来接受Internet上的连接请求,然后将请求转发给内部真实服务器,并且将内部服务器上得到的结果返回给Internet上的客户端。

  优点:

  1、减少后端web服务器的压力,提高响应速度

  2、因为未保存任何网页的数据,增加了web服务器的安全


   一、多域名跳转实例

   例如:一个网站有两个域名,分别是www.a.com和www.b.com

    实现:

  1.当用户访问域名www.a.com,时将请求通过Nginx代理到192.168.1.10的8080端口的web目录下。   

  2.当管理员访问http://www.a.com/admin时,将请求代理到192.168.1.10的8080端口的/admin目录下。

  3.当用户访问www.b.com域名时,将请求代理到192.168.1.10的8080端口的/wap目录下。

   这里重点说明反向代理的设置:

    server www.a.com
    location / {
    proxy_pass http://192.168.1.10:8080 /web/ 
    }
location /admin {
    proxy_pass http://192.168.1.10:8080 /admin
    }
    server www.b.com
location / {
    proxy_pass http://192.168.1.10:8080 /wap/
    }
 提示:通过proxy_pass配置两个代理目录web和wap后面必须加上斜杠。否则会报错!

 

  二、通过Nginx重定向实现新旧域名过渡

     在web应用中,我们需要网页重定向的情况。例如网页目录结构变动,网页的扩展名改变,网站域名的改变,网页重命名等。因为要将网站旧域名用新的域名进行替换,不可避免的丢失搜索引擎的流量。旧的域名也需要在一段时间内能够访问,并且要实现在用旧域名访问网站的时候,自动将访问的请求转到新的域名。这个时候我们就需要新旧域名的过渡。

      在Nginx的域名过渡方法有两种:

例如:假设www.a.com为旧域名,而www.b.com为新域名。要实现通过www.a.com访问的url都自动转向www.b.com对应的url路径下面。

    方法一:
    server {
    server_name www.a.com;
    rewrite ^/(.*)$ http://www.a.com/$1 permanent;      
      }
提示:这里我仅仅列车Nginx配置文件的server配置段。这个配置中使用了Nginx的重定向功能,通过
rewrite模块的permanent参数实现永久重定向的http状态301.


    方法二:
通过判断Nginx的核心变量host实现重定向功能:
    server {
    server_name www.a.com www.b.com;
    if ($host != 'www.a.com' ) {
    rewrite ^/(.*)$ http://www.a.com/$1 permanent; 
              }
     }
 提示:这个方式是通过Nginx的核心变量host进行判断,然后通过rewrite模块的重定向实现转向。

       

    三、Nginx中目录权限控制,IP访问控制,文件访问权限控制实现

1.实现与Apache一样的目录列表:

location / {
autoindex on; 
}

2.实现ip控制,用ngx_http_access_module模块,这个模块可以限制某些ip地址的客户端访问:

location / {
deny 192.168.1.66.80;
allow 192.168.66.0/24;allow 192.16.88.0/16;deny all;
}

提示:这些规则中,Nginx是按照顺序依次进行规则检测的,直到匹配到一条规则,然后退出。

3.要禁止访问某个目录,配置如下:

   location ~ ^/(WEB-INF)/ {
   deny all;   
   }

4.要禁止访问*.txt、*.doc文件,配置如下: 

location ~.* \.(txt|doc)${
   root /data/www/wwwroot;
   deny all;
   }