Как настроить переадресацию портов на Amazon EC2

16

У меня есть веб-приложение, работающее на Amazon EC2. Он прослушивает порт 9898.

Я могу получить к нему доступ, введя IP-адрес и номер порта.

например, 1.2.3.4:9898

Однако то, что я действительно хотел бы сделать, это не вводить номер порта.

Исследуя это, похоже, что переадресация портов может быть решением - то есть пересылать http-запросы, полученные через порт по умолчанию (80), на мой нестандартный порт (9898).

Это правильный путь? Если да, то как мне установить это на EC2?

Если нет, то как мне добиться того, чего я хочу?

Заранее благодарю за любую помощь.

Обновить

Я должен был упомянуть, что экземпляр EC2 - это Windows Server 2012 AMI.

KSL
источник
Для пересылки запросов вам нужно иметь что-то перед вашим сервером, например HAProxy, или использовать iptables. Amazon не поддерживает переадресацию портов.
Натан С

Ответы:

10

Самым простым способом сделать это, не устанавливая что-либо самостоятельно, является установка Amazon Elastic Load Balancer перед экземпляром. Это позволяет вам перенаправлять порты так, как вы собираетесь.

ceejayoz
источник
Я попробовал ваше предложение, но не могу заставить проверить работу пинга.
Ksl
ceejayoz правильно ELB это способ сделать это. Используйте проверку TCP, если HTTP не работает. Извините, недостаточно репутации, чтобы комментировать.
Пестуй
Привет, пожалуйста, не могли бы вы уточнить.
Ksl
Попробуйте разрешить ICMP на брандмауэре Windows Server с адреса (ов) ELB
Том О'Коннор,
Брандмауэр уже настроен по умолчанию для разрешения всего трафика ICMP V4.
ksl
6

У вас есть два варианта.

1) Настройте обратный прокси-сервер для пересылки HTTP-запросов (при условии, что это HTTP) на другой порт.

Это должно быть так просто: установить apache, включить модуль 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
Bugh. Попробуй это. stackoverflow.com/questions/11525703/port-forwarding-in-windows
Том О'Коннор
Спасибо за ответ. Я пытался использовать netsh, как вы предложили, но я не могу заставить его работать. Я пересылаю http-запросы через порт 80 на публичные и частные ip-адреса моего экземпляра EC2.
ksl
-3

потому что я видел комментарий по использованию iptables, я поделюсь своим опытом в ec2 linux. Я нашел отличную статью о переадресации портов для Node.js. Если вы пропустите инструкции по редактированию sysctl.conf, вы увидите инструкции по пересылке. Моя процедура Linux немного отличалась от Ubuntu. Статья: http://www.lauradhamilton.com/how-to-set-up-a-nodejs-web-server-on-amazon-ec2

Работа сделана через ssh. Единственная ошибка, с которой я столкнулся, заключалась в том, что я дважды направлял маршрут, не сбрасывая между ними iptables, и мое веб-приложение не было видно, пока я не сбросил и не перезагрузил. Я знаю, что это ужасное изображение, с которым я хочу закончить, извините.

Брайан
источник