【问题标题】:How to configure maintenance pages on Passenger suburi deployments如何在乘客 suburi 部署中配置维护页面
【发布时间】:2010-12-24 13:12:24
【问题描述】:

我正在尝试在 Phusion Passenger 上为 rails 应用程序的 suburi 部署设置维护页面。所有文档都显示了 DocumentRoot ReWrite 规则,这些规则不会出现(不认为应该)在 suburis 上重写。我尝试修改 ReWrite 规则以指向 suburi,但我似乎无法让它工作。有没有人能够得到一个有效的设置?

【问题讨论】:

    标签: rewrite passenger phusion


    【解决方案1】:

    我遇到了完全相同的问题。 虽然我用的是前置过滤方式,但其实我很讨厌这种方式。

    更新和回答

    如果我有多个子 uri,这将起作用,这里唯一缺少的是我无法将标头设置为 503,因为 ErrorDocument 依赖于一个静态文件,我无法确定它在运行时的位置。

    假设 app1 和 app2 是我的子 uri 之一

    RewriteEngine On
    RewriteCond %{REQUEST_URI} !.(css|gif|jpg|png)$
    RewriteCond %{DOCUMENT_ROOT}/$1/system/maintenance.html -f
    RewriteCond %{SCRIPT_FILENAME} !maintenance.html
    RewriteRule ^/([^/]+)(/|/.*)?$ /$1/system/maintenance.html [L]
    
    RailsBaseURI /app1
    RailsBaseURI /app2
    

    【讨论】:

    • 让我知道以上内容是否适合您,我会将其标记为答案。
    • 我终于有时间测试你的重写规则了,我发现如果我在应用你的最后一个规则时有几个子uri,就会有问题。我对其进行了一些修改,并将其发布在我的答案中
    • 您可以使用多个错误文档,每个目录指令一个
    【解决方案2】:

    所以我终于有一些时间来处理这个问题,发现您实际上可以使用 mod_rewrite 处理维护页面的方法进行一些调整。请记住,对于子域,在根目录中创建了一个指向应用程序公共目录的符号链接。现在如果公共目录包含维护文件(或在子目录中),您可以连接 mod_rewrite 来找到它。

    例如假设应用程序名为app1ma​​intenance.html文件存储在publicsystem中/strong> 目录。以下是 apache 配置文件中的行,无论是在 RailsBaseURI /app1 行之前还是之后声明它似乎都无关紧要

    RewriteEngine on
    RewriteCond %{DOCUMENT_ROOT}/app1/system/maintenance.html -f
    RewriteCond %{SCRIPT_FILENAME} !maintenance.html
    RewriteRule ^.*$ /app1/system/maintenance.html [L]
    
    RailsBaseURI /app1
    

    【讨论】:

      猜你喜欢
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      • 2018-09-07
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      相关资源
      最近更新 更多