【发布时间】:2016-02-21 04:00:16
【问题描述】:
所以我在几个 AWS EC2 实例上有一个 Rails 生产应用程序,这些实例由 AWS 弹性负载均衡器进行负载均衡。 EC2 实例通过 nginx 和乘客服务于 Rails 应用程序。
我的 DNS 指向负载平衡器,一切正常,除了我的 CSS/JS/资产没有被提供。我将serve_static_files 设置为false 以让nginx 处理它,并且我已经使用RAILS_ENV=production rake assets:precompile 预编译了我的资产。当我检查 chrome 上的资产时,它说有一个502 Gateway Error。如果我尝试使用网络浏览器直接点击资产,我什么也看不到,仍然是 502.
我检查了我的 nginx 错误日志,没有出现 502 错误。
我检查了我的 nginx 访问日志:
[IP 地址编辑] - - [19/Nov/2015:06:04:49 +0000] "GET /assets/application-2386fede65ec2aa6a381b4e3215b6d7278e40c40a9bd5e1c190d0e1d98bafd1d.css HTTP/1.1" 200 1271@"Mozilla"@/ (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36"
而且看起来不错。
我检查了我的 Rails 日志,它没有任何资产或 502 相关。
我有一个单独的实例,其 DNS 记录直接指向 IP 地址而不是 AWS ELB,这告诉我它与负载均衡器试图将资产返回给我的方式有关。有人有什么想法吗?
【问题讨论】:
标签: ruby-on-rails amazon-web-services nginx amazon-ec2 amazon-elb