Rails Elastic Beanstalk nginx 301 重定向

Posted

技术标签:

【中文标题】Rails Elastic Beanstalk nginx 301 重定向【英文标题】:Rails Elastic Beanstalk nginx 301 redirect 【发布时间】:2016-08-25 22:16:47 【问题描述】:

我已经能够使用本指南成功部署和运行一个空的 Rails 应用程序:AWS Rails Elastic Beanstalk。

Region: us-west-2
Platform: 64bit Amazon Linux 2016.03 v2.1.0 running Ruby 2.3 (Puma)
Tier: WebServer-Standard

当我尝试部署和运行我的实际生产应用程序时,在添加 secret_key_base、设置我的 postgres RDS 并将 postgis 添加到我的数据库后部署成功。但是当我导航到 url 时,服务器挂起并且请求超时。没有应用程序级别的日志被输出,唯一的 puma 日志是网络工作者正在启动并准备就绪。

我检查了 nginx 访问日志,发现所有尝试的请求都有状态301,这解释了服务器挂起和超时。

172.31.36.144 - - [30/Apr/2016:04:54:47 +0000] "GET / HTTP/1.1" 301 5 "-" "-" "66.240.219.146"
172.31.36.144 - - [30/Apr/2016:04:55:02 +0000] "GET / HTTP/1.1" 301 5 "-" "-" "66.240.219.146"
172.31.36.144 - - [30/Apr/2016:04:55:21 +0000] "GET / HTTP/1.1" 301 5 "-" "-" "66.240.219.146"

所以我认为有一个 nginx 配置错误,它不允许 nginx 找到我的应用程序的正确位置,但不确定在哪里查看/如何更正。这是我唯一的配置 ebextensions 文件:

option_settings:
  - option_name: BUNDLE_DISABLE_SHARED_GEMS
    value: "1"
  - option_name: BUNDLE_PATH
    value: "vendor/bundle"
packages:
  yum:
    git: []

这对于我推送的示例应用程序以及我的生产应用程序是相同的。非常困惑为什么两个应用程序之间的 nginx 配置会有所不同,但感谢任何帮助。如果您需要更多日志或文件,请告诉我。

【问题讨论】:

您是否将 RDS 安全组设置为允许从 EC2 实例的安全组连接到 5432? 【参考方案1】:

解决了。问题是我仍然在 production.rb 中有 config.force_ssl = true 行,因为在 Heroku 上启用了 ssl。不过,我必须重建环境才能使此更改生效。

【讨论】:

以上是关于Rails Elastic Beanstalk nginx 301 重定向的主要内容,如果未能解决你的问题,请参考以下文章

Rails + Elastic Beanstalk + Passenger:更改乘客配置

Elastic beanstalk [Rails] 部署问题 - 无法分配内存

AWS Elastic Beanstalk——rails 部署问题

Rails 4 Elastic Beanstalk 部署错误

Rails 4.1 Elastic Beanstalk 找不到图片网址

使用 AWS Elastic Beanstalk 部署 Rails ActionCable