【问题标题】:How to prevent user from accessing the non http version of my site?如何防止用户访问我网站的非 http 版本?
【发布时间】:2021-10-13 18:37:14
【问题描述】:

我目前在 docker compose 中的 nodejs 服务器在 EC2 实例上提供服务,而我的 react 应用在 s3 上提供服务,它们分别位于两个云端发行版的后面。

我对这些 AWS 产品相当陌生,我想知道如何配置此 AWS 设置,以便当用户访问 s3 和 EC2 (http) 提供的原始域时,他们会被重定向回云端 (https )?

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-ec2 amazon-cloudfront


    【解决方案1】:

    保护方法取决于来源。

    对于 S3 源,您可以通过确保存储桶不公开来完全禁用访问。您可以使用 Cloudfront 的 Origin 访问身份来针对存储桶对 cloudfront 进行身份验证。这样人们只能通过 cloudfront 到达 s3 源。

    对于负载均衡器后面的 EC2(我假设您使用 ALB,因为它是最佳实践),设置稍微复杂一些。您可以在 Cloudfront 向您的 ALB 发出的调用中添加“秘密”标头(例如 x-origin-protection)。然后向您的 alb 添加一个侦听器规则,该规则仅在标头存在时转发,并且默认操作被重定向到云端。

    监听器规则示例:

    ListenerRule:
      Type: AWS::ElasticLoadBalancingV2::ListenerRule
      Properties:
        Actions:
          - Type: forward
            TargetGroupArn: !Ref MyEc2InstanceTargetGroup
        Conditions:
          - Field: http-header
            HttpHeaderConfig:
              HttpHeaderName: x-origin-protection
              Values:
                - !Ref SecurityToken
        ListenerArn: !Ref HttpsAppListener
        Priority: 1
    

    有关 ALB 设置的更完整指南,请查看https://www.arhs-group.com/protecting-aws-alb-behind-aws-cloudfront-distribution/

    【讨论】:

      【解决方案2】:

      在您的云端分发中 > 选择选项卡“行为” > 选择您的“行为”并单击编辑 > 在“查看器协议策略”中选择“将 HTTP 重定向到 HTTPS”并单击“保存更改”并等待部署完成。

      更多关于Viewer protocol policy的信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-10
        • 2011-05-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多