amazon-web-services - Amazon EC2 - 监听 HTTPS 请求并重定向到 SpringBoot
问题描述
我有一个托管在 Amazon Amplify 上的前端 React 应用程序和一个托管在 Amazon EC2 上的后端 SpringBoot 应用程序。
我的域只能发送 https 请求,但 SpringBoot 默认是 http。我的问题是我的 EC2 实例如何监听 HTTPS 请求,然后重定向到 SpringBoot 中的 http 端口。
我检查了其他帖子,似乎您不应该将 SSL 添加到您的 SpringBoot 应用程序,而应该添加到它前面的负载均衡器。在今天结束时,这就是我想要的:
POST https: xxx.xxx.xxxx:443/user/signin
---> http: xxx.xxx.xxxx:8080/user/signin
- - - - - - - - - - - - - - - - - - - - 更新 - - - - - -------------------------------------------
Marcin 提供了有关如何解决此问题的顶级想法,谢谢!
我还附上了像我这样的人的分步解决方案,请参阅下面的答案
解决方案
如果您只想继续使用实例(没有负载均衡器或云端),那么您需要为它获取自己的域。然后,您必须为此使用注册一个有效的公共 SSL 证书,例如letsencyrpt。一旦你有了它,你可以在实例上设置 nginx 以接受 https 连接,并以 http 转发到你的 spring boot。
更简单的方法是使用应用程序负载均衡器。您仍然需要自己的域,但是一旦拥有它,您就可以轻松地从 AWS ACM 获得免费的 SSL 证书,然后将其部署在平衡器上。无需更改您的实例。所以它会是:
Client ---(HTTPS)---> ALB ---(HTTP)---> EC2
推荐阅读
- android - 用户尝试使用 onDataChange 注册时的 Firebase 数据库如何防止发送错误 toast
- reactjs - 如果未更改默认值,则 antd 表单项验证失败
- c++ - Visual C++ 6.0 WholeArchive
- flutter - 使用 Firebase 进行声明式身份验证路由
- python - 在 Python 字典中断言所有值的数据类型的更好方法
- java - 如何从单击的自定义 ListView 项目发送信息?
- javascript - 如何获取放在控制台中的数组对象,带地图的箭头功能不起作用
- pine-script - Pinescript - 3 个级别的确认条件与时间间隔?
- java - 在 recyclerView 中设置 cardView 可见性的问题
- android - Android Firestore Stripe - 添加付款来源