- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个由 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/
我是一名优秀的程序员,十分优秀!