在哪里/如何编辑 nginx.conf 以在 Elastic Beanstalk 上启用带有附加标头的 SSL

Posted

技术标签:

【中文标题】在哪里/如何编辑 nginx.conf 以在 Elastic Beanstalk 上启用带有附加标头的 SSL【英文标题】:Where/how to edit nginx.conf to enable SSL with additional header on Elastic Beanstalk 【发布时间】:2016-04-12 17:08:23 【问题描述】:

我希望将所有 HTTP 流量重定向到部署在 AWS Elastic Beanstalk 上的 Rails Web 应用程序上的 HTTPS。

Rails 有一个配置选项可以强制所有连接使用 SSL。问题是,如果不修改我的 EB 环境中的默认 nginx 配置,我会得到一个重定向循环。 Why am I getting infinite redirect loop with force_ssl in my Rails app?

我是 EB 的新手,我想知道如何使用 .ebextensions 配置文件将 proxy_set_header X-Forwarded-Proto $scheme; 添加到 nginx.conf。我是否通过 SSH 将当前的 nginx.conf 文件复制并粘贴到我的 EC2 实例中并添加标题?当我导航到 /etc/nginx/nginx.conf 时,配置文件的 HTTPS 部分似乎被注释掉了,即使我在 AWS Web 控制台中启用了它。

【问题讨论】:

您可以为此使用负载均衡器吗?我们将实例设为私有,负载均衡器拥有 SSL 证书并仅监听 443。它转发到实例上的 80 端口。 如果我只在负载均衡器上打开端口 443,我将无法使用 http://www.example.com 访问我的应用程序(我收到 ERR_CONNECTION_REFUSED 响应)。有没有办法通过 AWS 将 http 请求重定向到 https?我会使用 Rails 的 force_ssl 配置设置,但我需要编辑 nginx.conf 以防止它重定向循环。 【参考方案1】:

我已经面对这个问题有一段时间了。在 Rails + Elastic Beanstalk 上强制 SSL 的最佳解决方案来自 Amazon。他们有一个配置文件(ebextension)正是为了这个目的。你可以在这里找到它:

https://github.com/awsdocs/elastic-beanstalk-samples/blob/830ff9163ef37d0ece8ecf583c1c84223e9266e7/configuration-files/aws-provided/security-configuration/https-redirect/ruby-puma/https-redirect-ruby-puma.config

如果您需要有关 ebextensions 的更多信息,可以在文档http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html 中找到它们

【讨论】:

死链接。这就是为什么你总是在从 GitHub 复制链接之前点击y。 :( github.com/awsdocs/elastic-beanstalk-samples/blob/… 我想就是这样。

以上是关于在哪里/如何编辑 nginx.conf 以在 Elastic Beanstalk 上启用带有附加标头的 SSL的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 解析编辑nginx.conf

js中,为可编辑div添加表情后如何光标移至最后

如何在 Maven 构建中包含随机文件以在 AWS EBS 上部署 WAR 文件?

nginx +location + https

vim编辑器下nginx.conf语法高亮

Nginx的安装目录详解