> 文档中心 > Nginx指定时间段无法访问(Nginx时间段黑名单)

Nginx指定时间段无法访问(Nginx时间段黑名单)


Nginx指定时间段无法访问

文章目录

    • Nginx指定时间段无法访问
      • 背景
      • 配置思路

背景

醒狮运维组部分域名指定时间不对外访问,但是网络管理员休假了,无法从防火墙等一系列位置配置,强制指定要配置Nginx,经过无数秒的吐槽之后,老狮子便带着小狮子们一起讨论如何配置。。。

配置思路

经过一系列的讨论,得出了以下两个解决方法:

  1. 准备两份不通的配置文件,经过操作系统定时任务切换;
  2. 通过Nginx的if语句对时间进行判断,如果当前时间为限制时间,则返回其他页面或500;

方法1需要配置定时任务,每天reload,还需要准备两份不同的配置文件,比较冗余而已需要留意reload是否生效,万一哪天用户名过期就不生效了。

于是使用方法2,只需在需要限制的server里添加如下配置,重载即可。

# 获取本地时间if ( $time_local ~ "^(\d+)\/(\w+)\/(\d+):(\d+):(\d+):(\d+) \+(\d+)" ) {  set $hour $4;}# 指定时间黑名单,如果为指定直接,返回500if ( $hour ~ 00|01|05|06|07 ) {  return 500;}

重载nginx

nginx -s reload

到这就可以去验证是否生效。