基于nginx的nodejs站点的维护页面



我想为我的网站设置一个维护页面(访问者会看到),但我也想让开发人员能够访问网站并测试东西(尽管最后一点,开发人员的访问,是项目经理的请求……不确定这是最好的方法,因为我们似乎应该在临时服务器上测试)。

该站点基于nodejs,通过proxy_pass在nginx服务器上运行。

我在apache下做这件事的方法是允许传递一个get-param,这将允许开发人员避免重定向到维护页面。似乎不知道如何在nginx下使用proxy_pass来实现这一点。

我可以将所有内容重定向到维护页面,但图像和css已损坏,无法加载。此外,我无法实现GET参数重写。

关于如何处理这个问题,有什么建议吗?网上的各种教程和SO上的评论似乎都不起作用,我怀疑这与proxy_pass的使用有关。不确定。


*edit:我在SO上看到了这篇文章,但我试图实现它,结果访问者被重定向到"/demaintenance",并得到了一个服务器错误,而不是我的维护页面。此外,它没有解决覆盖重定向的问题。

这将是一个如何决定筛选用户的问题。如果您可以根据IP地址、cookie或其他请求方面筛选访问权限,则可以使用if指令将所有其他用户重定向/重写到维护页面。您提到使用GET参数——这个条件就是一个例子(使用$arg_PARAMETER,如本文所述):

server {
    if ($arg_secret != "123456") {
        rewrite ^(.*)$ /maintenance$1 break;
    }
    location /maintenance {
        #root directive etc
    }
    location / {
        #proxy_pass directive etc
    }
}

或者,您可以反转条件和配置,并且只有proxy_pass条件为true。但是,"if"指令可能存在问题(请参见http://wiki.nginx.org/IfIsEvil)所以在部署之前先尝试一下。

至于您发现的图像和CSS未加载的问题,您需要确保这些维护资源始终得到服务,因为它们可能也会受到重定向规则的影响。示例location指令可能是这样的:

location ~ /(.*.css|.*.jpg) {
    root /var/www/maintenance;
}

相关内容

  • 没有找到相关文章

最新更新