将 Http 重定向到 Elastic BeansTalk、Tomcat、Nginx 中的 Https
Posted
技术标签:
【中文标题】将 Http 重定向到 Elastic BeansTalk、Tomcat、Nginx 中的 Https【英文标题】:Redirect Http to Https in Elastic BeansTalk, Tomcat, Nginx 【发布时间】:2018-01-07 16:05:49 【问题描述】:我有一个 Spring Boot 应用程序 (1.5.3),它在 Tomcat 容器上运行,nginx 作为负载均衡器。 我创建了以下文件:
.ebextentions/nginx/conf.d/myapp.conf
我根据这个article添加了以下内容:
server
if ($http_x_forwarded_proto != 'https')
rewrite ^(.*) https://$host$1 redirect;
我已在证书管理器中安装 SSL 证书并在我的环境中设置它。现在应用程序同时服务于 HTTP 和 https 请求。我想将所有 HTTP 请求重定向到 https 而不会陷入重定向循环。但不起作用。
【问题讨论】:
如何将.ebextensions
放入 WAR 文件中进行部署,负载均衡器将如何从 WAR 中读取该文件?
文件路径必须是/.ebextensions/nginx/conf.d/elasticbeanstalk/
。见serverfault.com/a/822596/123651
【参考方案1】:
我认为您不应该将 server
部分添加到 .conf 文件中。整个 .conf 文件应该是这样的:
if ($http_x_forwarded_proto = 'http')
return 301 https://www.example.com$request_uri;
见this answer on Server Fault。
【讨论】:
在我的负载均衡器中,端口 80 指向实例端口 5000,今天我检查了日志,并且 5000 请求从未通过 nginx。所以我再次将实例端口更改为 80 并开始工作。如果它不起作用,请确保端口 80 仅指向实例端口 80。以上是关于将 Http 重定向到 Elastic BeansTalk、Tomcat、Nginx 中的 Https的主要内容,如果未能解决你的问题,请参考以下文章
Elastic Beanstalk 将 http 重定向到 https 用于 iis 站点
将 Http 重定向到 Elastic BeansTalk、Tomcat、Nginx 中的 Https
Elastic Beanstalk 和 Spring Boot 将 HTTP 重定向到 HTTPS
从 http 重定向到 https (Pencilblue Elastic Beanstalk)
将 AWS Elastic Beanstalk URL 重定向到我自己的域
Python3 + Nginx:将 HTTP 流量重定向到 AWS Elastic Beanstalk 上的 HTTPS