任务需求:
要求限制网站某个域名下子目录里的来源IP,即只允许某些IP访问;
方法:
利用location指定子目录,结合allow和deny指令进行源IP限制即可:
... ...
location ~* /admin {
allow 127.0.0.1;
allow 10.10.0.0/16;
allow 192.168.0.0/16;
allow x.x.x.x/28;
deny all;
}
#注(一次经历):
如果你写的网段不符合标准的 子网/掩码 规则,则该语句无效. 举个工作中的例子,公司某城市办公室需要访问网站某个管理后台系统,之前有同事写了下面这个allow语句:
allow 221.231.xx.150/29
但公司分部为什么不能访问呢。根据掩码,心中算了下,该段的子网地址应该为:
221.231.xx.152,难不成是这个原因? 随后修改为如下:
allow 221.231.xx.152/29
然后 nginx -t && kill -HUP <nginx_master_pid>
就可以访问啦。
错误信息如下:
# nginx -t
nginx: [emerg] host not found in upstream "sns.onbobo.local" in /etc/nginx/nginx.conf:87
nginx: configuration file /etc/nginx/nginx.conf test failed
分析:
语法上没有错误,只是系统无法解析这个域名,所以报错。
解决办法:
添加dns到/etc/resolv.conf 或者是/etc/hosts,让其能够解析到IP即可。
为大家举一个例子,更改nginx的log格式。
大家可以根据自己的工作需要,灵活配置nginx的log格式,以利于日后的日志分析工作。
#log_format main '$remote_addr - $remote_user [$time_local] '
# '"$request" $status $body_bytes_sent '
# '"$http_referer" "$http_user_agent"';
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
##以上步骤,为了能够正常分析log的pv,hits,访问量,才设定的,默认的log格式,是无法准确分析出所需要的结果。