Nginx的请求时间限制(如周一到周五可以访问)

方案一:简答修改nginx配置文件,不支持复杂逻辑

方案二:使用Lua脚本执行拦截,使用过程比较复杂,(还未处理)

修改nginx的配置文件

方案一

因为Nginx中只支持简单的if语句,所有只写if

config 复制代码
# 在 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该怎么做的代码
相关推荐
不灭的程序员阿澄40 分钟前
Nginx 容器化部署实战:SPA 路由、Cookie 透传与 WebSocket 全配置详解
websocket·nginx·状态模式
Csxyzj2 小时前
Nginx:企业高性能web服务器(一)
运维·服务器·nginx
Linux运维技术栈3 小时前
云平台服务器遭遇黑客攻击?用 Nginx 批量封锁敏感接口,自动返回 444 关闭连接
运维·服务器·nginx·安全·防御
life码农15 小时前
Linux截取Nginx指定时间段日志的三种方法(grep/awk/sed)
linux·nginx
小飞侠在吗21 小时前
Windows 下 Nginx 访问 127.0.0.1 报 50x 错误:根因是路径里 \t 被当成 Tab
运维·windows·nginx
liuyicenysabel1 天前
Flask 个人站 iProfile 上线笔记(k3s + Nginx + Let‘s Encrypt)
笔记·nginx·flask
Jimmy_jimi2 天前
利用nginx代理完成url重定位
运维·nginx
东风破_3 天前
Docker 基础:为什么需要容器?
前端·后端·nginx
东风破_3 天前
Docker 实战:使用 Nginx 作为容器入口代理 Node 服务
前端·后端·nginx
外滩运维专家3 天前
通配符证书到期,阿里云上几个服务的证书怎么一次换完
运维·开发语言·nginx·https·php·消息推送