Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
EC2 인스턴스에서 호스팅되는 웹사이트에 연결할 수 없는 이유는 무엇인가요?
내 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 호스팅되는 퍼블릭 웹사이트에 연결할 수 없습니다.
간략한 설명
연결할 수 없는 웹사이트 오류를 해결하려면 EC2 인스턴스의 구성 설정이 올바른지 확인하십시오. 예를 들어, 인스턴스에 올바른 DNS 구성이 없는 경우 해당 인스턴스에서 호스팅되는 웹사이트에 연결할 수 없습니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
SSH 또는 SSM Session Manager를 사용하여 인스턴스에 연결합니다. 두 방법 모두 사용할 수 없는 경우 EC2 직렬 콘솔을 사용하여 Nitro System에 구축된 인스턴스에 연결합니다.
인스턴스가 실행 중이고 두 상태 검사를 모두 통과했는지 확인
인스턴스가 Amazon EC2 콘솔에서 실행 중인지 확인합니다. 상태 확인 문제가 있는 경우, EC2 Linux 인스턴스에 연결할 수 없고 상태 확인에 실패하는 이유는 무엇입니까?의 단계를 따릅니다. 인스턴스가 올바르게 부팅되는지 확인합니다. 자세한 내용은 인스턴스 콘솔 출력 또는 연결할 수 없는 인스턴스의 스크린샷 캡처를 참조하십시오.
인스턴스의 시스템 로그에서 부팅 오류를 확인합니다.
다음 방법을 사용하여 부팅 오류 확인:
- 커널 패닉 오류가 발생하는 경우, EC2 인스턴스의 "Kernel panic - not syncing" 오류를 해결하려면 어떻게 해야 합니까?를 참조하십시오.
- 기타 운영 체제 오류의 경우, 운영 체제 문제로 인해 인스턴스 상태 확인에 실패한 EC2 Linux 인스턴스 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오.
인스턴스의 보안 그룹 및 네트워크 ACL 구성 확인
다음 방법을 사용하여 인스턴스의 구성 확인:
- 인스턴스의 연결된 보안 그룹과 네트워크 ACL이 포트 80 및 443에서의 트래픽을 허용하는지 확인합니다.
- 인스턴스 서브넷의 라우팅 테이블에 인터넷 게이트웨이에 대한 기본 경로가 있는지 확인합니다.
인스턴스의 DNS 구성이 올바른지 확인
다음 방법을 사용하여 인스턴스의 구성 확인:
- 웹사이트에서 Route 53 DNS 서비스를 사용하는 경우, DNS 레코드를 올바르게 구성했는지 확인합니다.
- 인스턴스에 탄력적 IP 주소가 할당되었는지 확인합니다. 인스턴스를 중지했다가 시작해도 탄력적 IP 주소는 여전히 인스턴스와 연결되어 있습니다.
- 퍼블릭 IP 주소 또는 탄력적 IP 주소를 A 레코드에 매핑해야 합니다.
웹 서버가 실행 중이고 포트 액세스를 차단하는 OS 수준 방화벽이 없는지 확인
네트워크 포트는 다양한 서비스가 요청을 보내는 통신 엔드포인트입니다. 이러한 요청에는 사용자의 웹사이트 연결 요청이 포함됩니다. 웹 서버는 HTTP 트래픽을 포트 80에서 수신하고 TLS/SSL로 암호화된 트래픽을 위해 포트 443을 사용합니다. 웹 서버가 실행되고 있지 않거나 방화벽이 이러한 포트를 차단하는 경우, 사용자는 웹사이트에 연결할 수 없습니다. 다음 단계를 완료합니다.
-
웹사이트가 로컬로 실행되고 있는지 확인하려면, EC2 인스턴스 호스팅 웹사이트 내에서 다음 명령을 실행합니다.
curl https://localhost
또는
curl http://localhost:443
참고: curl을 사용할 때 문제가 발생하는 경우 인스턴스의 웹 호스팅 서버에 문제가 있는지 확인하십시오. 또한 인스턴스의 애플리케이션 구성을 확인하십시오.
SSH, SSM Session Manager 또는 EC2 직렬 콘솔을 사용하여 인스턴스에 연결합니다. -
웹 서버 서비스 상태를 확인합니다.
RHEL, CentOS, Fedora 및 Amazon Linux 시스템의 경우, systemctl status httpd 명령을 실행하여 웹 서버의 상태를 확인합니다. 명령에서 웹 서버가 비활성 상태라는 정보가 반환됩니다.$ sudo systemctl status httpd.service The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: inactive (dead)
Debian 또는 Ubuntu 시스템의 경우, systemctl status apache2 명령을 실행하여 웹 서버의 상태를 확인합니다. 웹 서버는 포트 80 또는 443에서 수신 중이어야 합니다. 명령에서 웹 서버가 비활성 상태라는 정보가 반환됩니다.
$ sudo systemctl status apache2.service The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset: disabled) Active: inactive (dead)
-
웹 서버를 시작하고 부팅 시 시작하도록 서비스를 활성화하려면 다음 명령을 실행합니다.
RHEL, CentOS, Fedora 및 Amazon Linux 시스템의 경우:$ sudo systemctl start httpd; sudo systemctl enable httpd
Debian 또는 Ubuntu 시스템의 경우:
$ sudo systemctl start apache2; sudo systemctl enable apache2
-
웹 서버 서비스가 실행 중이고 활성화되었는지 확인합니다.
RHEL, CentOS, Fedora 및 Amazon Linux 시스템의 경우 다음 명령을 실행합니다.$ sudo systemctl status httpd.service The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)Active: active (running)
Debian 또는 Ubuntu 시스템의 경우 다음 명령을 실행합니다.
$ sudo systemctl status apache2.service The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)Active: active (running)
참고: SystemV를 실행하는 Linux 시스템의 경우, 다음 명령을 실행하여 웹 서버 상태를 확인합니다.
Debian 또는 Ubuntu 시스템의 경우, httpd를 apache2로 바꿔야 합니다.$ sudo service httpd statushttpd is stopped
SystemV에서 중지된 웹 서버 서비스를 다시 시작하려면 다음 명령을 실행합니다.
$ sudo service httpd start Starting httpd: [ OK ]
-
웹 서버가 사용자로부터 들어오는 연결 요청을 포트 80 또는 443에서 수신하고 있는지 확인하려면 다음 명령을 실행합니다.
$ sudo netstat -tulpn | grep -iP 'httpd|apache2' tcp 0 0 :::80 :::* LISTEN 2961/httpd
참고: 여러 인터페이스가 실행 중인 경우, 웹 서버가 모든 IP 주소에서 수신 중인지 확인하고 다음 명령을 실행합니다.
cat /etc/httpd/conf/httpd.conf | grep Listen
다음은 출력 예시입니다.
Listen *:80
또는
Listen *:443
-
OS 수준 방화벽의 상태를 확인합니다. 활성 방화벽을 찾으면 포트 80 및 443에서 요청을 허용하는지 확인합니다.
(선택 사항) iptables 규칙이 포트 80 및 443에서 들어오는 요청을 차단하는지 확인하려면 다음 명령을 실행합니다.$ sudo iptables -vnL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 35 10863 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
이전 IPTables 명령의 출력은 ICMP, localhost 및 포트 22/TCP(SSH)만 허용됨을 보여줍니다. 따라서 포트 80/TCP 및 443/TCP에 대한 인바운드 연결은 차단 또는 거부됩니다.
포트 80 및 443이 들어오는 HTTP 및 HTTPS 연결 요청을 수락하도록 허용하려면 다음 명령을 실행합니다.$ iptables -I INPUT -p tcp --match multiport --dports 80,443 -j ACCEPT
다음 출력은 멀티포트 규칙이 웹 서버 서비스 포트인 80/TCP 및 443/TCP에 추가된 것을 보여줍니다.
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443 486 104K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Amazon Linux 2023, Amazon Linux 2, RHEL 7
firewalld 서비스가 실행 중인지 확인하려면 다음 명령을 실행합니다.
$ sudo firewall-cmd --staterunning
firewalld 서비스가 실행 중인 경우 다음 명령을 실행하여 포트 80/TCP 및 443/TCP에서의 연결을 허용합니다. 예시의 마지막 명령은 서비스를 다시 로드하여 새로 추가된 규칙을 적용합니다.
$ sudo firewall-cmd --add-service=http --permanent success $ sudo firewall-cmd --add-service=https --permanent success $ sudo firewall-cmd --reload success
Debian 및 Ubuntu 서버
다음 단계를 완료합니다.
-
Uncomplicated Firewall(UFW)이 있는지 확인하려면 다음 명령을 실행합니다.
$ sudo ufw status verbose Status: active
-
UFW가 실행 중인 경우 다음 명령을 사용하여 포트 80/TCP 및 포트 443/에서 들어오는 연결 요청을 허용합니다.
$ sudo ufw allow in 80/tcp Rule added Rule added (v6) $ sudo ufw allow 443/tcp Rule added Rule added (v6)
웹 서버 액세스 오류 로그에서 문제를 확인합니다. 웹 서버 로그는 /var/log에 있습니다. 다음은 기본 웹 서버 로그 위치입니다.
- Amazon Linux 및 RHEL: /var/log/httpd
- Debian 및 Ubuntu: /var/log/apache2
참고: 웹 서버 로그 위치는 서버 구성에 따라 다릅니다.
관련 정보
관련 콘텐츠
- 질문됨 10달 전lg...
- 질문됨 일 년 전lg...
- 질문됨 2년 전lg...