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.