ローカルでprecompileしたmanifestファイルがAWSの本番環境から読み込めません。
どうしても原因が理解できず行き詰まってしまったので質問させていただきます。
タイトルのとおりです。
ローカルでassets:precompileを実行後、サーバーにデプロイをしている状況なのですが、manifestファイルが反映されずに困っています。
(imageのみはきちんと反映されますがstylesheetやjavascriptは反映されません)
以下、確認済みの事項です。
- ブラウザのキャッシュおよびNginxのキャッシュを削除、Nginx,Unicornを再起動しシークレット・ウィンドウで動作確認をしています
- ブラウザ・ユーザーエージェントを変えての動作確認もしています
- manifestファイルの内容は完全に同一です
- デベロッパーツールから正常にすべてのassetsが呼ばれており200,304のステータスコードが返っています
- css,javascriptファイルはリンクを直打ちでパスが正しいことを確認しています
- ローカルのproduction環境では正常にassetsが反映されています
- ローカルにファイル群をダウンロードしてassetsが反映されるか確認したところ、
↓ではcssが反映されますが
<link rel="stylesheet" media="all" href="http://localhost:3000/assets/application-34ad617bfadb73ed23d5a75.css" data-turbolinks-track="true">
↓ではcssが反映されません
<link rel="stylesheet" media="all" href="http://ec2-****.ap-northeast-1.compute.amazonaws.com/assets/application-34ad617bfadb73ed23d5a75.css" data-turbolinks-track="true">
という状況(2つとも内容は全く同じ)で、ローカルとAWS環境ではサーバーが違う点以外は同じです。ローカルではWEBrick、AWS環境ではNginx+Unicornを採用しています。
ということを総合的に踏まえNginxの設定があやしいのではないかと思い、いろいろ試してはいる状況なのですが改善されません。/etc/nginx/nginx.confの設定内容、production.rbの関連しそうな設定内容および動作環境は以下のとおりです。
どうかアドバイスのほどよろしくお願いいたします。
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;
}
}
}
-
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
config.assets.compile = false
config.assets.digest = true
-
- 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(リポジトリマシン)