6

スタックオーバーフラワー。Rails nginx の設定に問題があります。Rails 3.0.12 アプリを実行していますが、nginx は初めてです。

nginx に静的アセットを提供させることができないようです。フォルダー内のすべてのリクエストに対して/public404 を取得します。これまでに取得した nginx 構成を投稿しています。多分私は何かを逃した

nginx.conf:

user rails;
worker_processes  1;
daemon off;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
  worker_connections  2048;
}

http {
  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;

  access_log  /var/log/nginx/access.log;

  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;

  keepalive_timeout  65;

  gzip  on;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_proxied any;
  gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

  server_names_hash_bucket_size 64;

  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;
}

sites-enabled/project.conf:

upstream project {
  # fail_timeout=0 means we always retry an upstream even if it failed
  # to return a good HTTP response (in case the Unicorn master nukes a
  # single worker for timing out).

  # for UNIX domain socket setups:
  server unix:/tmp/project.socket fail_timeout=0;
}

server {
  listen 80;
  root /srv/www/project/current/public;
  passenger_enabled on;
  server_name dev.project.eu;
  server_name *.dev.project.eu;

  location / {
      #all requests are sent to the UNIX socket
      proxy_pass  http://project;
      proxy_redirect     off;

      proxy_set_header   Host             $host;
      proxy_set_header   X-Real-IP        $remote_addr;
      proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

      client_max_body_size       10m;
      client_body_buffer_size    128k;

      proxy_connect_timeout      90;
      proxy_send_timeout         90;
      proxy_read_timeout         90;

      proxy_buffer_size          4k;
      proxy_buffers              4 32k;
      proxy_busy_buffers_size    64k;
      proxy_temp_file_write_size 64k;
      root /srv/wwww/project/current/public;
    }

}

location /からブロックを削除しようとしましたproject.confが、何もしませんでした。アセットはまだ表示されていません。

Railsの switch についても認識してserve_static_assetsいますが、nginx でこれらのアセットを提供する必要があるため、それを使用したいと考えています。

4

2 に答える 2

6

そのようなものを追加する必要があります(場所に関するドキュメント):

location / {
  try_files $uri @ruby;
}

location @ruby {
    proxy_pass  http://project;
}
于 2012-05-02T13:10:34.323 に答える
0

このスレッドが1年以上前のものであることは知っていますが、本番環境で同じ問題が発生しました

私にとってそれを機能させたのは実行中だった

rake assets:precompile

開発中、およびコメント解除

load 'deploy/assets'

Rails 4を使用していますが。

于 2013-07-20T03:28:14.230 に答える