方案一:简答修改nginx配置文件,不支持复杂逻辑
方案二:使用Lua脚本执行拦截,使用过程比较复杂,(还未处理)
修改nginx的配置文件
# 在 location 模块添加以下代码
# 自定义404页面
# error_page 404 /index404.html; 文件在nginx的html目录下
# location = /index404.html {
# root /usr/local/nginx/html; 默认的html文件夹路径
# }
# 获取当前日期的星期几
set $weekday "";
if ($date_gmt ~ "Mon") {
set $weekday 1;
}
if ($date_gmt ~ "Tue") {
set $weekday 2;
}
if ($date_gmt ~ "Wed") {
set $weekday 3;
}
if ($date_gmt ~ "Thu") {
set $weekday 4;
}
if ($date_gmt ~ "Fri") {
set $weekday 5;
}
if ($date_gmt ~ "Sat") {
set $weekday 6;
}
if ($date_gmt ~ "Sun") {
set $weekday 7;
}
# 周六、周天禁止访问,提前终止
if ($weekday ~ 6|7) {
return 404;
}
# 时间限制访问 如 8:30 到11:30可以访问
# 先获取具体时间
if ( $time_local ~ "^(\d+)\/(\w+)\/(\d+):(\d+):(\d+):(\d+) \+(\d+)" ) {
set $hour $4;
set $day $1;
set $month $2;
set $min $5;
}
# 开放小时时间
set $flag "";
if ($hour ~ 08|09|11) {
set $flag "${flag}1";
}
# 不在开放时间内 提前终止,404
if (($flag = "") {
return 404;
}
# 但是8:00-8:30与 11:30 - 11:59 是不能访问的
set $flag2 "";
if ($hour = 08) {
set $flag2 "${flag2}1";
}
if ($hour= 11) {
set $flag2 "${flag2}2";
}
if ($min ~ 01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29) {
set $flag2 "${flag2}9";
}
# 判断是不是8:00 - 8:30
if ($flag2 = 19) {
return 404;
}
# 判断是不是11:30 - 11:59
if ($flag2 = 2) {
return 404;
}
# 下面代码就是允许通过后nginx该怎么做的代码