0

次の構成を使用しています。

  • Ubuntu 12.04 デスクトップ i386
  • ルビー 1.9.3p327
  • レール 3.2.9
  • ノードJS 0.8.14
  • Nginx + Phusion Passenger

私は次の手順に従いました:

  1. テスト用に新しい Ubuntu 仮想マシンを作成する
  2. Ruby + Rails + NodeJS をインストールする
  3. ここから Passenger + Nginx をインストールします
  4. ActiveRecord なしで/home/gerald/myappに新しい Rails アプリを作成します(DB の問題を破棄するため)
  5. 上記のRailsアプリをdevモードで実行します(Railsサーバー)

それは完全に機能し、rails.png 画像を見ることさえできました。

問題は...

...上記のアプリを実行するように Nginx を構成したところ、rails.pngイメージで 404 エラーが発生しました。

/opt/nginx/conf/nginx.confファイルに追加した行は次のとおりです。

http {
    ...
    server {
        listen 80;
        server_name www.mydomain.com;
        root /home/gerald/myapp/public;
        passenger_enabled on;
    }
    ...
}

Nginx error.log には次のようにのみ記載されています。

2012/11/19 15:07:06 [error] 17398#0: *1 open() "/home/gerald/myapp/public/assets/rails.png" failed (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET /assets/rails.png HTTP/1.1", host: "127.0.0.1", referrer: "http://127.0.0.1/"

前もって感謝します。

4

1 に答える 1

2

rails.png ファイルはアセットであり、アセット パイプラインにあります。nginx vhost を設定する必要があります。

それは次のようなものです:

location ~* ^/assets/ {
# Per RFC2616 - 1 year maximum expiry
# http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
    expires 1y;
    add_header Cache-Control public;

# Some browsers still send conditional-GET requests if there's a
# Last-Modified header or an ETag header even if they haven't
# reached the expiry date sent in the Expires header.
    add_header Last-Modified "";
    add_header ETag "";
    break;
}

これを確認してください:リンク

于 2012-11-21T23:30:02.183 に答える