gpt4 book ai didi

amazon-web-services - 如何让 Elastic Beanstalk nginx 支持的代理服务器自动从 HTTP 重定向到 HTTPS?

转载 作者:行者123 更新时间:2023-12-03 05:45:22 25 4
gpt4 key购买 nike

我有一个由 Node.js 支持的网站,正在 Amazon Elastic Beanstalk 上运行。

我的 Node.js 应用程序监听端口 8080,并且我将 nginx 弹性负载均衡器配置与我的 EB 应用程序一起使用,监听端口 80 和 443 的 HTTP 和 HTTPS。

但是,我只想接受我的应用程序中通过 HTTPS 发送的流量。

我可以在应用程序中安装一些东西来处理这个问题,但我对一种让负载均衡器通过 HTTPS 将所有 HTTP 请求重定向到我的网站的方法感兴趣。

最佳答案

在亚马逊付费支持的想法经历了几次失败之后,他们最终还是成功了。实现此功能的方法是将环境配置为响应端口 80 和 443。然后在主 Node.js 应用程序文件夹中创建一个名为 .ebextensions 的文件夹,并放置一个名为那里的 00_nginx_https_rw.config ,内容如下:

files:
"/tmp/45_nginx_https_rw.sh":
owner: root
group: root
mode: "000644"
content: |
#! /bin/bash

CONFIGURED=`grep -c "return 301 https" /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf`

if [ $CONFIGURED = 0 ]
then
sed -i '/listen 8080;/a \ if ($http_x_forwarded_proto = "http") { return 301 https://$host$request_uri; }\n' /etc/nginx/conf.d/00_elastic_beanstalk_proxy.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

亚马逊的支持团队解释说:此配置创建一个部署 Hook ,它将重写规则添加到/etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf。

(之前他们为我提供了 .config,将单独的文件复制到/etc/nginx/conf.d 中,但这些文件要么没有效果,要么更糟,出于某种原因似乎覆盖或优先于默认的 nginx 配置.)

如果您想撤消此操作,即删除 Hook ,则需要删除此 ebextension 并发出命令来删除它创建的文件。您可以手动执行此操作,也可以通过临时放置的 ebextensions 命令执行此操作:

/opt/elasticbeanstalk/hooks/appdeploy/enact/45_nginx_https_rw.sh
/opt/elasticbeanstalk/hooks/configdeploy/enact/45_nginx_https_rw.sh

我还没有尝试过这个,但想必类似的方法可以删除它们并撤消此更改:

container_commands:
00_undochange:
command: rm /opt/elasticbeanstalk/hooks/appdeploy/enact/45_nginx_https_rw.sh
01_undochange:
command: rm /opt/elasticbeanstalk/hooks/configdeploy/enact/45_nginx_https_rw.sh

希望这可以帮助将来的其他人。

关于amazon-web-services - 如何让 Elastic Beanstalk nginx 支持的代理服务器自动从 HTTP 重定向到 HTTPS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24297375/

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