0

我是 nginx 服务器配置的新手。我在公共目录的子目录下提供文件时遇到问题。

例如,下的文件;rails_app/public/uploads/client/2/image/7/ 目录或 rails_app/public/picture/ 目录没有提供,但我没有问题:rails_app/public/webcam.swf

就像不提供子目录一样。

我的 production.rb 文件

  # Disable Rails's static asset server (Apache or nginx will already do this)
  config.serve_static_assets = false

只有当我将 serve_static_assets 设置为 true 我没有问题

我的 nginx 配置:

upstream thin {
  server '127.0.0.1:3000';
  server '127.0.0.1:3001';
  server '127.0.0.1:3002';
  server '127.0.0.1:3003';
  server '127.0.0.1:3004';
}

server {
  listen 80 default deferred;
  # server_name example.com;
  root /home/user/appname/public;

  location ^~ /assets/ {
    root /home/user/appname/public;
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://thin;
  }
  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

你能帮我做这个配置吗?

提前致谢。

4

1 回答 1

2

我认为问题在于您的location /块正在捕获您的动态请求以及您的非资产静态请求。试试这个配置(注意 try_files 行):

server {
  listen 80 default deferred;
  # server_name example.com;
  root /home/user/appname/public;
  try_files $uri @app;

  location ^~ /assets/ {
    root /home/user/appname/public;
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  location @app {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://thin;
  }
  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}
于 2013-02-21T02:20:05.677 回答