Як налаштувати переадресацію портів на 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.