Amazon EC2에서 포트 전달을 설정하는 방법


16

Amazon EC2에서 실행되는 웹 애플리케이션이 있습니다. 포트 9898에서 수신 대기합니다.

IP 주소와 포트 번호를 입력하여 액세스 할 수 있습니다.

예 : 1.2.3.4:9898

그러나 실제로 할 수있는 일은 포트 번호를 입력하지 않아도됩니다.

이것을 조사하면 포트 포워딩이 해결책이 될 수 있습니다. 즉 기본 포트 (80)에서 수신 된 http 요청을 비표준 포트 (9898)로 전달합니다.

이것이 올바른 방법입니까? 그렇다면 EC2에서 어떻게 설정합니까?

그렇지 않다면 어떻게 내가 원하는 것을 달성 할 수 있습니까?

도움을 주셔서 감사합니다.

최신 정보

EC2 인스턴스는 Windows Server 2012 AMI라고 언급했습니다.


요청을 전달하거나 iptables를 사용하려면 HAProxy와 같은 서버 앞에 무언가가 있어야합니다. 아마존은 포트 포워딩을 지원하지 않습니다.
— Nathan C

답변:


10

직접 설치하지 않고이 작업을 수행하는 가장 쉬운 방법은 인스턴스 앞에 Amazon Elastic Load Balancer를 배치하는 것입니다. 이를 통해 원하는대로 포트를 전달할 수 있습니다.


귀하의 제안을 시도했지만 핑 검사가 작동하지 않습니다.
— ksl

ceejayoz는 올바른 ELB가 그것을 수행하는 방법입니다. HTTP가 작동하지 않으면 TCP 확인을 사용하십시오. 의견이 충분하지 않아 죄송합니다.
— Pestouille

안녕하세요, 자세히 설명해주세요.
— ksl

ELB 주소에서 Windows Server 방화벽에 ICMP를 허용 해보십시오
— Tom O'Connor

방화벽은 기본적으로 모든 ICMP V4 트래픽을 허용하도록 이미 구성되어 있습니다.
— ksl

6

두 가지 옵션이 있습니다.

1) HTTP 요청 (HTTP라고 가정)을 다른 포트로 전달하도록 리버스 프록시를 설정하십시오.

아파치 설치, proxy_http 모듈 활성화, 다음과 같이 간단해야합니다.

ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
    Order allow,deny
    Allow from all
</Proxy>
ProxyPass / http://localhost:9898/
ProxyPassReverse / http://localhost:9898/

2) IP 테이블을 설정 하여 패킷을 전달합니다 .


EC2 인스턴스가 Windows Server 2012 AMI라고 언급 했어야합니다. Windows의 IP 테이블에 해당하는 것이 무엇인지 알 수 없었습니다.
— ksl


답변 주셔서 감사합니다. 제안한대로 netsh를 사용해 보았지만 제대로 작동하지 않습니다. 포트 80의 http 요청을 EC2 인스턴스의 퍼블릭 및 프라이빗 IP 주소로 전달했습니다.
— ksl

-3

iptables 사용에 대한 의견을 보았 기 때문에 ec2 linux에서 내 경험을 공유 할 것입니다. Node.js의 포워딩 포트에 대한 훌륭한 기사를 찾았습니다. sysctl.conf 편집에 대한 지침으로 건너 뛰면 전달 지침이 표시됩니다. 내 리눅스 절차는 우분투와 약간 다릅니다. 기사 : http://www.lauradhamilton.com/how-to-set-up-a-nodejs-web-server-on-amazon-ec2

작업은 ssh를 통해 수행됩니다. 내가 만난 유일한 문제는 iptables를 플러시하지 않고 미리 두 번 라우팅하는 것이었고 플러시하고 다시로드 할 때까지 웹 응용 프로그램을 볼 수 없었습니다. 나는 그 결론이 끔찍한 이미지라는 것을 알고 있습니다. 죄송합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.