2014-11-25 14 views
1

아마존 웹 서비스에 배포 한 작은 Go 웹 서버가 있지만 작동에 문제가 있습니다.아마존 AWS EC2 GoLang

내 EC2 인스턴스에 공용 & 개인 IP 주소가 할당되어 있지만 이동 서버를 시작할 수 없습니다.

로컬 호스트에서 작동하면 작동하지만 분명히 연결할 수 없으므로 공개 IP를 할당하려고 시도하지만 오류가 발생하지 않고 충돌합니다.

http.ListenAndServe("public_ip", nil) 

여기에서 진행하는 방법에 대한 아이디어가 있으십니까?

+0

'http.ListenAndServe (": port", nil)'이 (가) 작동합니까? 사용 가능한 모든 인터페이스에서 수신 대기해야합니다. – tomasz

+0

아니, 작동하지 않습니다 ... –

+1

EC2 보안 그룹에 열려있는 모든 것. 최대 1024 번 포트에서 서버를 실행하려면 루트 권한이 필요합니다. – tomasz

답변

4

을 쓰지 않고 서버 이 (가) 작동하지 않는다는 것이 무슨 의미인지 모르겠습니다. 오류를 기록하고 있는지 확인하십시오.

log.Println(http.ListenAndServe(addr, nil)) 

이렇게하면 작동하지 않는 이유를 알 수 있습니다. 거기 뭐라구? 루트 권한이없는 포트 < 1024에서 실행되는 경우

예를 들어, 내가 볼 수

2014/11/25 19:14:51 listen tcp :80: bind: permission denied 

을 이제, 주소 :8080에 서버를 실행하는 경우, 당신은 모든 인터페이스에서 수신해야합니다. 로컬 호스트에서 서버를 테스트 할 수 있습니다. 작동하는 경우 인스턴스에 security group을 수정하여이 포트에서 인터넷을 통해 시스템에 연결할 수 있는지 확인하십시오.

여전히 작동하지 않는다면 에 대해 무엇이 수행되는지 알려주세요..

+0

당신이 옳았어요, 난 그냥 sudo했다. 그런 다음 보안 그룹을 수정하십시오. 감사! –

+0

위대한, 구름을 즐기십시오! – tomasz

3

몇 가지 확인 :

  • 귀하의 공용 IP는 로컬 컴퓨터 (이 신도입니다)에 존재하는 개인 주소 또는 모든 0.0.0.0을 수신하지 않습니다.
  • 가 로컬 호스트가 아닌 원격에서 연결하는 경우, 확인 : 인스턴스의 보안 그룹은 포트와 소스를 허용하는 인바운드 규칙이

    • 있다.
    • VPC에있는 경우 VPC가 인터넷 게이트웨이에 연결되어 있고 해당 경로가 있습니다.