在维护期间禁用symfony应用程序

时间:2017-05-17 08:42:15

标签: symfony redirect blocked

我正在寻找在维护支持期间禁用Symfony应用程序的任何方法。我的意思是,以一种非常简单的方式:

1)我有一个人们可以进入的应用程序,以查看数据库的信息。

2)管理员可以更改数据库的信息。在这段时间内,数据库信息不应该是可访问的,因为它一直在删除和更新。

3)我想要的是,如果在此维护期间有任何方法阻止应用程序并将用户(而不是管理员用户)重定向到维护通知页面。

我记得有一个全局功能可以重定向所有网址,但我不记得很清楚。
在维护期间,我可以在数据库中(或以任何其他方式)建立一个参数,并要求此值知道应用程序是否处于维护期,重定向到正常的URL重定向到通知维护页面

2 个答案:

答案 0 :(得分:0)

如果您在数据库中存储一个param以了解管理员是否正在更新数据,那么使用内核请求监听器相当简单:

  • 测试数据库值
  • 如果Admin是当前用户

see here : Events and event listeners

答案 1 :(得分:0)

您可以直接在网络服务器配置中执行此操作而无需更改任何项目代码。以下适用于NGINX(但谨慎使用,因为if is evil)并且为Apache重现它应该没有问题。

location / {

  # if the user is not you / an admin
  if ($remote_addr != "your.ip.address") {
    # return http code 503 (The server is currently unavailable (because it is overloaded or down for maintenance).)
    return 503;
  }

  # otherwise, go ahead as usual
  try_files $uri $uri/ /app.php?$is_args$args;

}

# show specific page when http code 503
error_page 503 @maintenance;
location @maintenance {
  # which is maintenance.html
  rewrite ^(.*)$ /maintenance.html break;
}

在我的案例中,IP检查是一个快速解决方案。您还可以检查特定的cookie等。这个想法保持不变:应用程序独立于此。