【问题标题】:Change website access from everyone from 8am to midnight EST to just my IP from midnight to 8am [closed]从美国东部标准时间上午 8 点到午夜将网站访问权限更改为从午夜到上午 8 点仅我的 IP [关闭]
【发布时间】:2013-03-18 11:29:23
【问题描述】:

我有一个问题,因为我不知道从哪里开始寻找答案。 Web 详细信息:Apache 5.3、Linux 3.2 内核、Ubuntu 12.04、Mysql 5.5、VPN 上的 PHP 5.3。

我目前正在通过 /etc/httpd.conf 文件控制对本网站的访问。 (拒绝,允许,拒绝所有人,然后允许来自我的 IP)。此外,该网站拥有商业 SSL 证书。

当网站“上线”时,我希望它在美国东部标准时间上午 8:00 自动切换到“允许所有人 - 公众”,然后在午夜切换到“只允许我”。

我不知道从哪里开始我的调查:cron?阿帕奇编码? php编码? 什么?

有人建议吗?

【问题讨论】:

  • 一种不安全的方法是制作 2 个 htaccess 文件(可写)和您的 cron 在您想要的准确时间替换它们..
  • 您可以创建两个 cron 任务,一个在上午 8:00 运行,一个在午夜运行,第一个取消限制(考虑 .htaccess 文件将其清空),第二个 (在午夜)向 .htaccess 添加一些行 :)

标签: php apache cron


【解决方案1】:

我建议不要修改 apache 配置,而是建议一个修改 ip 表规则的 cron 作业。这样用户就不会访问您的网站,您也不必担心人们可能会收到 404 或类似的信息。

当然,这还取决于您希望如何结束当前正在浏览的人的会话 - 即,使用 iptables 或 apache 配置更改将意味着有人可能在完成某事时突然得到 403。

如果您想提供友好的“停机维护”消息,您可能还需要考虑使用重写将访问者重定向到维护页面,告知用户该站点何时再次可用。

将其编码到您的应用程序中可以让您给人们几分钟的时间来完成他们正在做的事情(例如,一个页面通知,告知用户他们在被强制删除之前在 x 分钟内完成他们正在做的事情)。

您可以将这两个选项结合起来:在 23:55,会显示一个横幅,告知人们该网站将在 00:00 - 08:00 期间不可用,然后使用 iptables/apache configs/rewrites 来限制访问。

另一个想法,如果您有一个包含公共内容的网站,您可能会看到搜索爬虫的问题 - 即它们只能间歇性地访问该网站,这可能会以某种方式产生影响。 (假设您想覆盖尽可能多的人,让您的网页被搜索引擎收录很重要)。

edit @amit- 该解决方案很棒,现在我知道了,我肯定会建议这是一个更好的选择。但是,除非您别无选择,否则我会避免放入 .htaccess(有关何时(不)使用 .htaccess 的更多详细信息,请参阅here

【讨论】:

  • 马克 - 我会使用 httpd.conf 文件来实现任何更改。
【解决方案2】:

您可以在没有 cron 作业的情况下执行此操作,并且无需使用这些 .htaccess 代码使 .htaccess 可写。

    RewriteEngine On
    RewriteCond %{TIME_HOUR} >00
    RewriteCond %{TIME_HOUR} <08
    RewriteCond %{REMOTE_ADDR} !^123\.255\.123\.255 #replace this with your IP
    RewriteRule ^.* - [F,L] 

上面的代码对您有用,最好也向您的访问者显示一条消息。

【讨论】:

  • 谢谢大家!!你们都让我深思!!
猜你喜欢
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2016-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
相关资源
最近更新 更多