繁体   English   中英

如何在弹性均衡器之类的负载均衡器后面设置双http和https服务器

[英]How to setup dual http and https servers behind a load balancer like elastic balancer

我有一个nodejs + expressjs应用程序,只需要在http上正常运行即可。 我向应用程序添加了两个管理员视图,并使用身份验证和我自己的自签名证书通过https提供这些视图。 这意味着在我的应用程序中同时运行http和https服务器。 在我的本地系统上,这与位于我的“ donotcheckin”目录中的https证书一起正常工作。

现在,我正在尝试使其在负载平衡的弹性beantalk设置上运行。 我已经通过IAM上传了证书和私钥,而且似乎可以正常工作(我的eb应用程序的http和https URL均可访问)。

我现在很困惑的是如何在我的应用程序代码中部署http和https服务器。 请为这两个选项增加一些灯光(或建议其他选项)以提供帮助。

  1. 由于负载平衡器已经处理了https,因此我可以完全删除https服务器吗? 如果是这样,是否有头信息可以保证负载均衡器传递到应用程序的标准http服务器,以便它可以检测是否可以安全地访问管理员视图?

  2. 我还可以将证书留在负载均衡器以及应用程序的https服务器上。 但是,在这种弹性beantalk自动缩放环境中,授予此https服务器访问证书和私钥文件的正确方法是什么?

谢谢您的帮助。

  1. 如您所述,您可以配置ELB以将所有HTTPS和HTTP流量转发到应用程序http服务器,而无需处理应用程序中的任何https配置。 您可以参考“ X-Forwarded-Proto”标头,以检测请求是否通过http vs https发出。

    对于我的用例,我将所有流量转发到https,因此,如果标头类型为http:

     app.use(req, res, next) { if(req.headers['x-forwarded-proto'] == 'http' && process.env.NODE_ENV!=="development"){ res.redirect('https://' + req.headers.host + req.path); } else { next(); } } 
  2. 如果您希望将证书保留在App中,那么就像将证书放在App目录中的某个位置并在创建服务器时加载它们一样简单,就像这样

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM