programing

HTTP에서 HTTPS로의 리디렉션이 AWS ALB에서 작동하지 않음

css3 2023. 10. 12. 23:27

HTTP에서 HTTPS로의 리디렉션이 AWS ALB에서 작동하지 않음

나는 워드프레스 사이트에 ECS를 사용하고 로드 밸런싱 및 SSL 오프로드를 위해 ALB(Application Load Balancer)를 사용하고 있습니다. ALB는 포트 80 및 443에서 두 개의 서로 다른 리스너를 사용하고 있습니다.리디렉션 규칙은 포트 80 수신기에 연결됩니다.

Redirect tohttps://#{host}:443/#{path}?#{query} 
Status code:HTTP_301

웹 서버는 php-fpm으로 nginx이며 포트 80에서 청취합니다.nginx에서는 리디렉션이 수행되지 않습니다.

그래서 기본적으로 제가 원하는 것은 http (user req) -> https (ALB redirection) -> http (nginx) 입니다.

이제 문제는 ALB가 메인 홈 페이지의 http 트래픽을 다음과 같이 리디렉션하지 않는다는 것입니다.

http://example.com -> http://example.com (ALB 리디렉션 없음) -> http://example.com (nginx)

그러나 같은 도메인에서 작동하지만 다음과 같은 다른 URL에서 작동합니다.

http://example.com/page -> https://example.com/page (ALB 리디렉션) -> http://example.com/page (nginx)

편집: ALB Listener 규칙 링크입니다.

다른 답변이 작동하지 않으면 Security Group이 포트 80에서 인바운드 연결을 허용하는지 다시 확인합니다.

  1. 로드 밸런서로 이동
  2. 클릭하기Description. 아래로 스크롤Security Groups보안 그룹을 찾습니다.
  3. Security group(보안 그룹)을 클릭하고 포트 80에서 인바운드 연결이 허용되는지 확인합니다.추가하지 않으면 추가합니다.포트 80에서 트래픽을 리디렉션하더라도 여기서 차단되면 해당 단계에 도달하지 못할 것입니다.

security group rules

저도 같은 문제가 있었습니다.HTTP 수신기를 제거하고 다시 추가한 후 제대로 작동하기 시작했습니다.

무엇을 잘못하고 있는지 확실하지 않지만 포트 80 수신기는 https로 리디렉션을 처리할 수 있습니다.

포트 80 수신기를 수동으로 업데이트하거나 클라우드 정보를 사용하는 경우 다음과 같이 나타납니다.

Listener80:
  Type: AWS::ElasticLoadBalancingV2::Listener
  Properties:
    DefaultActions:
      - RedirectConfig:
          Port: 443
          Protocol: HTTPS
          StatusCode: HTTP_301
        Type: redirect
    LoadBalancerArn: !Ref ALB
    Port: 80
    Protocol: HTTP

수신기 구성은 다음과 같습니다.

Recirect Listener - Console

언급URL : https://stackoverflow.com/questions/55163791/http-to-https-redirection-not-working-on-aws-alb