아이폰의 Safari 및 Chrome에서 AWS Application Load Balancer를 통해 사이트에 연결하는 문제가 발생하는 경우, 로드 밸런서에서 http/2가 활성화되어 있는지 확인해보는 것이 좋습니다.
활성화되어 있다면, Apache를 사용하고 있다면 .htaccess 파일에 다음 라인을 추가해보세요.
Header unset Upgrade
이 작은 라인이 사이트가 작동하느냐 마느냐의 차이를 만들 수 있습니다.
왜 그러냐면 Http/2는 2015년에 출시된 새로운 버전의 프로토콜로, 인터넷이 작동하는 방식의 주요 업데이트입니다.
Http1.1에 비해 성능 및 보안 면에서 많은 이점이 있습니다.
왜 일부 브라우저에서 이상한 문제가 발생하는지 Stack Overflow 게시물에서 발생하는 문제에 대한 설명이 있습니다.
An endpoint MUST NOT generate an HTTP/2 message containing connection-specific header fields; any message containing connection-specific header fields MUST be treated as malformed (Section 8.1.2.6)…. connection-specific header fields, such as Keep-Alive, Proxy-Connection, Transfer-Encoding, and Upgrade
그래서 Apache에서 설정된 Upgrade 헤더를 제거하고 로드 밸런서가 모든 것을 처리하도록 의존하는 것이 해결책으로 보입니다.
증상은 여러 증상으로 특정 이미지만 로드되지 않을 수 있습니다.
저희 사무실에서는 iPhone 사용자 중 일부가 사이트를 정상적으로 볼 수 있지만 다른 사용자는 문제가 발생할 수 있습니다.
최근 이 문제를 마주쳤을 때 iPhone 8 및 iPhone 10 사용자에게 문제가 발생했지만 iPhone 11 및 iPhone 8 Plus 사용자는 정상적이었습니다.
그러나 iPhone 모델이나 운영 체제에 의존하는 것이 항상 아닌 것으로 보입니다.
따라서 사용자들이 “왜 내 웹사이트가 아이폰의 Safari에서 작동하지 않는가” 또는 “왜 이미지가 Safari에 표시되지 않는가”라고 물어보거나 “크롬에서 폰에서 사이트가 로드되지 않는다”고 보고한다면 위의 내용을 확인하고 다양한 폰에서 테스트해보는 것이 좋습니다.
이런 현상은 때로는 다소 불규칙적으로 발생할 수 있습니다.
당연히 가능하다면 사이트에서 이를 활성화하는 것이 좋습니다.