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 部署错误