利用location区块可以用于定位或者匹配网站资源信息

企业需求解决 搭建好一台nginx的web服务器。配置好内网卡地址与外网卡地址 web服务的网站域名为www.etiantian.org,站点目录为html/www 要求内网用户可以访问网站http://www.etiantian.org/AV资源信息 要求外网用户禁止访问网站http://www.etiantian.org/AV资源信息

①. 如何利用nginx进行访问控制 deny allow ngx_http_access_module --- 实现访问控制模块 官方链接:nginx.org/en/docs/http/ngx_http_access_module.html

location / {
 deny  192.168.1.1;
 allow 192.168.1.0/24;
 allow 10.1.1.0/16;
 allow 2001:0db8::/32;
 deny  all;
 }

②. 如何定位站点目录资源信息 location区块进行定位站点目录下资源信息

Syntax: 	location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
Default: 	—
Context: 	server, location

官方链接:http://nginx.org/en/docs/http/ngx_http_core_module.html#location

第一个里程:编写nginx配置文件

server {
     listen       80;
     server_name  www.etiantian.org;
     root   html/www;
     index  index.html index.htm;
     location /AV {
        allow   172.16.1.0/24;
        deny    10.0.0.0/24;
     }
 } 

第二个里程:创建测试访问资源

mkdir AV
 echo "AV info" >AV/oldboy.html
 cat AV/oldboy.html 

第三个里程:重启nginx服务

/application/nginx/sbin/nginx -t
/application/nginx/sbin/nginx -s reload
location [ = | ~ | ~* | ^~ ] uri { ... }
=     --- 精确匹配网站uri资源信息
~     --- 区分大小写匹配网站uri资源信息
~*    --- 不区分大小写匹配网站uri资源信息
^~    --- 优先匹配网站uri资源信息
/AV/  --- 指定匹配网站资源目录信息
/     --- 默认匹配网站资源信息
!     --- 对匹配的内容进行取反
location = / {
     [ configuration A ]       --- 优先级最高 ①
 }
 
 location / {                  --- 所有匹配都不满足时候,匹配默认location ④
     [ configuration B ]
 }
 
 location /documents/ {        --- 根据资源目录进行匹配         ③
     [ configuration C ]
 }
 
 location ^~ /images/ {        --- 优先匹配 ②
     [ configuration D ]
 }
 
 location ~* \.(gif|jpg|jpeg)$ {  --- 不区分大小写匹配网站资源  ③
     [ configuration E ]
 }