【发布时间】: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