

どうしても原因が理解できず行き詰まってしまったので質問させていただきます。  
タイトルのとおりです。

ローカルでassets:precompileを実行後、サーバーにデプロイをしている状況なのですが、manifestファイルが反映されずに困っています。  
(imageのみはきちんと反映されますがstylesheetやjavascriptは反映されません)

以下、確認済みの事項です。

  * ブラウザのキャッシュおよびNginxのキャッシュを削除、Nginx,Unicornを再起動しシークレット・ウィンドウで動作確認をしています
  * ブラウザ・ユーザーエージェントを変えての動作確認もしています
  * manifestファイルの内容は完全に同一です
  * デベロッパーツールから正常にすべてのassetsが呼ばれており200,304のステータスコードが返っています
  * css,javascriptファイルはリンクを直打ちでパスが正しいことを確認しています
  * ローカルのproduction環境では正常にassetsが反映されています
  * ローカルにファイル群をダウンロードしてassetsが反映されるか確認したところ、

↓ではcssが反映されますが

[code]

    <link rel="stylesheet" media="all" href="http://localhost:3000/assets/application-34ad617bfadb73ed23d5a75.css" data-turbolinks-track="true">
    
[/code]

↓ではcssが反映されません

[code]

    <link rel="stylesheet" media="all" href="http://ec2-****.ap-northeast-1.compute.amazonaws.com/assets/application-34ad617bfadb73ed23d5a75.css" data-turbolinks-track="true">
    
[/code]

という状況(2つとも内容は全く同じ)で、ローカルとAWS環境ではサーバーが違う点以外は同じです。ローカルではWEBrick、AWS環境ではNginx+Unicornを採用しています。

ということを総合的に踏まえNginxの設定があやしいのではないかと思い、いろいろ試してはいる状況なのですが改善されません。/etc/nginx/nginx.confの設定内容、production.rbの関連しそうな設定内容および動作環境は以下のとおりです。  
どうかアドバイスのほどよろしくお願いいたします。

[code]

    events {
      worker_connections  2048;
    }
    http {
      upstream unicorn {
        server unix:/tmp/unicorn.sock;
      }
      server {
        listen 80;
        server_name localhost;
        root /var/www/app;
        error_log /var/www/app/log/nginx.log;
        location ~ ^/assets/ {
          root /var/www/app/public;
        }
        location / {
          if (-f $request_filename) { break; }
          proxy_set_header X-Real-IP  $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Host $http_host;
          proxy_pass http://unicorn;
        }
      }
    }
    
[/code]

-
[code]

    config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
    config.assets.compile = false
    config.assets.digest = true
    
[/code]

-

  * Rails 4.2.0
  * Ruby 2.2.0
  * rbenv 0.4.0
  * Unicorn 4.8.3
  * Nginx 1.6.2
  * MySQL 5.5.40
  * EC2 Amazon Linux AMI 2014.09.1 (HVM)（プロダクションマシン）
  * Git（リポジトリマシン）


CC BY-SA 3.0
2015-05-29T14:05:20.063
10772
2017-06-25T14:21:30.707
2015-05-29T14:36:45.737
9900
9900
question
ruby-on-rails nginx aws unicorn
ローカルでprecompileしたmanifestファイルがAWSの本番環境から読み込めません。


回答ではなく、質問です。

  1. 疑問点

server_name localhost;

とあるので、この conf は使われていないのでは？という疑問があります。  
localhost にマッチする サーバ名なのでしょうか？

他の nginx.conf が起動している可能性はありませんか？

とはいえ、

> 直接URLを叩いても見られる  
>  unicorn で見られる

ということですので、関係ないかもしれません。  
問題切り分けの一つとして、確認されると宜しいかと思います。

  2. html の url は正しい？

> <http://ec2->****.ap-
> northeast-1.compute.amazonaws.com/assets/application-34ad617bfadb73ed23d5a75.css

を直打ちすると見られる、ということですので、rails が レンダリングする html が誤っていると推測できます。

サーバ上の rails が出力する link を確認すると問題がわかるかもしれません。

  3. サーバ上で、RAILS_SERVE_STATIC_FILES は宣言していないですよね？


CC BY-SA 3.0
2015-05-30T12:21:38.337
10795
2015-05-30T12:21:38.337
7471
10772
answer