Як налаштувати переадресацію портів на Amazon EC2


16

У мене веб-додаток працює на Amazon EC2. Він слухає порт 9898.

Я можу отримати доступ до нього, ввівши IP-адресу та номер порту.

наприклад, 1.2.3.4:9898

Однак я дуже хотів би зробити це - не вводити номер порту.

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

Це правильний шлях? Якщо так, то як це встановити на EC2?

Якщо ні, то як я досягти того, що хочу?

Заздалегідь дякую за будь-яку допомогу.

Оновлення

Я мав би згадати про екземпляр EC2 - це Windows AMI AMI.


Вам потрібно мати щось на вашому сервері, наприклад HAProxy, щоб пересилати запити ... або використовувати iptables. Amazon не підтримує переадресацію портів.
Натан C

Відповіді:


10

Найпростіший спосіб зробити це, не встановлюючи щось самостійно - поставити перед екземпляром Amazon Elastic Load Balancer. Вони дозволяють пересилати порти так, як ви плануєте.


Я спробував вашу пропозицію, але не можу заставити перевірку ping працювати.
ksl

ceejayoz правильний ELB - це спосіб це зробити. Використовуйте перевірку TCP, якщо HTTP не працює. Вибачте, недостатньо репутації для коментарів.
Pestouille

Привіт, будь ласка, ви можете детальніше.
ksl

Спробуйте дозволити ICMP на брандмауері Windows Server за адресою ELB
Tom O'Connor,

Брандмауер вже налаштований за замовчуванням, щоб дозволити весь трафік 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 - це AMI для Windows Server 2012. Я не зміг зрозуміти, що таке еквівалент Windows таблиць IP для Windows.
ksl


Дякуємо за відповідь. Я спробував використовувати netsh, як ви запропонували, але я не можу змусити його працювати. Я пересилаю запити http на порт 80 як на державні, так і на приватні IP-адреси мого екземпляра EC2.
ksl

-3

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.