反向代理(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; }
转载于:https://blog.51cto.com/liangey/1631456