【问题标题】:How prevent passenger to redirect the http request to the rails server when the request ask for a public asset?当请求请求公共资产时,如何防止乘客将 http 请求重定向到 rails 服务器?
【发布时间】:2015-07-29 14:39:00
【问题描述】:

我正在使用 Apache2 和 Passenger 为我的 web rails 应用程序提供服务。

我正在使用 Rails 的资产管道从 Rails.root/public 文件夹提供静态资产。 通常,当对资产文件提出请求时,Apache2 会成功找到相应的资产文件并提供服务。我对此很满意。

但是当资产丢失时,Passenger 会接管请求并将其重定向到 Rails。然后 Rails 生成 404 错误。

如果资产丢失,我的目标是防止 Apache/Passenger 重定向到 Rails 应用程序。我试图在不使用 Rails 的情况下生成 404 错误。我希望一旦 Apache2 无法获取资产,他就会发回错误。

我正在使用虚拟主机,这是我的配置文件。 (我正在使用 SSL) 即使文件丢失,我也希望公用文件夹仅由 Apache 提供。

<VirtualHost *:443>
    ServerName DOMAIN_NAME

    DocumentRoot /home/RAILS_APP_PATH/public
    #Here I saw some others configurations files having other directives, maybe I should add one.

    PassengerFriendlyErrorPages On

    RewriteEngine On

    ErrorDocument 503 /503.html
    RewriteCond %{REQUEST_URI} !^/503.html$
    RewriteCond %{DOCUMENT_ROOT}/../tmp/maintenance.txt -f
    RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /503.html [NC,R=503,L]
    RewriteCond %{DOCUMENT_ROOT}/../tmp/maintenance.txt !-f
    RewriteCond %{REQUEST_URI} ^/503.html
    RewriteRule ^503.html https://DOMAIN_NAME.com/ [R=302,L]

    SSLEngine ON
    SSLCertificateFile /home/SSL_PATH/certificat.crt
    SSLCertificateKeyFile /home/SSL_PATH/certificat.key
    SSLCertificateChainFile /home/SSL_PATH/bundle.crt

</VirtualHost>

【问题讨论】:

    标签: ruby-on-rails ruby apache apache2 passenger


    【解决方案1】:

    试试这个:)

    <Location /public>
       PassengerEnabled off
    </Location>
    

    【讨论】:

    • 非常感谢!!我必须设置 /assets 而不是 /public。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多