小编Ian*_*ell的帖子

对于带有乘客的 Rails 子目录中的页面缓存,我的 Nginx 重写规则应该是什么?

我使用的是 Nginx 0.7.64、Passenger 2.2.9、Rails 2.3.5。我将我的页面缓存目录设置为 /public/cache,并且我希望能够在通过 HTTP 请求时提供缓存页面,但在通过 HTTPS 请求时总是点击 Rails 应用程序。

我的大部分配置如下所示:

server {
  listen 80;
  server_name website.com www.website.com;
  proxy_set_header X-Forwarded-Proto http;
  root /home/deploy/website/current/public;
  passenger_enabled on;

  if (-f $document_root/cache/$request_filename.html) { 
    rewrite (.*) $document_root/cache/$1.html break;
  }
}

server {
  listen       443;
  server_name website.com www.website.com;
  root /home/deploy/website/current/public;
  passenger_enabled on;
  proxy_set_header X-Forwarded-Proto https;

  ssl                  on;
  ssl_certificate      /home/deploy/website/shared/ssl/www.website.com.combined.crt;
  ssl_certificate_key  /home/deploy/website/shared/ssl/www.website.com.key;
}
Run Code Online (Sandbox Code Playgroud)

我预计当我请求 website.com/about 时,我应该得到 /public/cache/about.html 的服务,但我却访问了 Rails 服务器(尾随日志显示了它)。

认为我可能有一个不合适的斜线(并且$document_root在大多数示例中没有看到),我还尝试了以下所有变体,但没有一个有效:

if (-f cache$request_filename.html) { 
  rewrite (.*) cache$1.html break;
}

if (-f /cache$request_filename.html) …
Run Code Online (Sandbox Code Playgroud)

rewrite nginx ruby-on-rails phusion-passenger

6
推荐指数
1
解决办法
3371
查看次数

标签 统计

nginx ×1

phusion-passenger ×1

rewrite ×1

ruby-on-rails ×1