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该怎么做的代码
相关推荐
weixin_507847952 小时前
Nginx SSL/TLS 配置
网络·nginx·ssl
子兮曰4 小时前
🔥深度解析:Nginx目录浏览美化与功能增强实战指南
前端·javascript·nginx
会飞的鱼_12319 小时前
Nginx性能优化与防盗链实战指南
运维·nginx·性能优化
m0_464608261 天前
Nginx反向代理与负载均衡部署
运维·nginx·负载均衡
北城笑笑1 天前
Server 13 ,CentOS 上使用 Nginx 部署多个前端项目完整指南( 支持多端口与脚本自动化 )
linux·服务器·前端·nginx·centos
東雪蓮☆2 天前
从零开始掌握 Web 与 Nginx:入门详解
运维·服务器·前端·nginx
✎﹏赤子·墨筱晗♪2 天前
基于Nginx实现反向代理、负载均衡与动静分离完整部署指南
运维·nginx·负载均衡
草履虫建模2 天前
在 RuoYi 中接入 3D「园区驾驶舱」:Vue2 + Three.js + Nginx
运维·开发语言·javascript·spring boot·nginx·spring cloud·微服务
游九尘2 天前
服务器都是用的iis, 前端部署后报跨域,不是用同一个服务器 是前端项目的服务器做Nginx转发,还是后端项目的服务器做Nginx转发?
服务器·前端·nginx
三坛海会大神5552 天前
nginx中配置https详解:配置SSL/TLS证书
nginx·https·ssl