gpt4 book ai didi

ruby-on-rails - 使用 ACM 的证书在 elasticbeanstalk 中强制使用 https

转载 作者:行者123 更新时间:2023-12-04 06:22:48 26 4
gpt4 key购买 nike

我已经配置了一个可扩展的 EB(Elasticbeanstalk) rails(puma) 实例。我已经通过 ACM(亚马逊证书管理器)申请了 https 并将其应用于我的负载均衡器。现在我的网站启用了 HTTPS。但是如何强制重定向到 https?我已经在网上尝试了许多解决方案,建议通过 .ebextensions 手动进行 nginx 配置设置,但我不确定从哪里获得 ACM 的证书?(我假设 ACM 现在不可能? )。如何强制使用 HTTPS?

最佳答案

当前的 AWS EB Rails 和 Node.js 设置都使用 nginx(如果您的 Web 服务器是 apache,请参阅 this answer),因此以下应该可以工作(改编自 this question):

创建文件 .ebextensions/01-force-https.config ( .config 很重要,而不是 .conf )具有以下内容。

如果您的环境是单个实例:

files:
"/etc/nginx/conf.d/01-force-https.conf":
owner: root
group: root
mode: "000644"
content: |
server {
listen 8080;
return 301 https://$host$request_uri;
}

如果您的环境是负载平衡的,很遗憾,您不能简单地添加到现有配置中,而需要使用 sed 对其进行修改:
files:
"/tmp/45_nginx_https_rw.sh":
owner: root
group: root
mode: "000644"
content: |
#! /bin/bash

CONFIGURED=`grep -c "return 301 https" /opt/elasticbeanstalk/support/conf/webapp_healthd.conf`

if [ $CONFIGURED = 0 ]
then
sed -i '/listen 80;/a \ if ($http_x_forwarded_proto = "http") { return 301 https://$host$request_uri; }\n' /opt/elasticbeanstalk/support/conf/webapp_healthd.conf
logger -t nginx_rw "https rewrite rules added"
exit 0
else
logger -t nginx_rw "https rewrite rules already set"
exit 0
fi

container_commands:
00_appdeploy_rewrite_hook:
command: cp -v /tmp/45_nginx_https_rw.sh /opt/elasticbeanstalk/hooks/appdeploy/enact
01_configdeploy_rewrite_hook:
command: cp -v /tmp/45_nginx_https_rw.sh /opt/elasticbeanstalk/hooks/configdeploy/enact
02_rewrite_hook_perms:
command: chmod 755 /opt/elasticbeanstalk/hooks/appdeploy/enact/45_nginx_https_rw.sh /opt/elasticbeanstalk/hooks/configdeploy/enact/45_nginx_https_rw.sh
03_rewrite_hook_ownership:
command: chown root:users /opt/elasticbeanstalk/hooks/appdeploy/enact/45_nginx_https_rw.sh /opt/elasticbeanstalk/hooks/configdeploy/enact/45_nginx_https_rw.sh

然后将它添加到你的 git repo 或 app bundle 和 eb deploy .这将创建 /etc/nginx/conf.d/01-force-https.conf这是从 /etc/nginx/nginx.conf 自动包含的.请注意 eb deploy如果您稍后从 .ebextensions 中删除相应的文件,则不会删除服务器上的文件.此外,我发现以下内容有助于通过 eb ssh 进行调试:
sudo service nginx configtest
sudo service nginx restart

关于ruby-on-rails - 使用 ACM 的证书在 elasticbeanstalk 中强制使用 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37427970/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com