У меня есть веб-приложение, работающее на Amazon EC2. Он слушает порт 9898.
Я могу получить к нему доступ, введя IP-адрес и номер порта.
например, 1.2.3.4:9898
Однако я действительно хотел бы иметь возможность не вводить номер порта.
Изучив это, похоже, что переадресация портов может быть решением - то есть пересылать HTTP-запросы, полученные на порту по умолчанию (80), на мой нестандартный порт (9898).
Это правильный путь? Если да, то как мне настроить это на EC2?
Если нет, то как мне достичь того, чего я хочу?
Заранее благодарю за любую помощь.
Обновить
Я должен был упомянуть, что экземпляр EC2 - это AMI Windows Server 2012.
Самый простой способ сделать это, не устанавливая что-либо самостоятельно, - поставить Amazon Elastic Load Balancer перед экземпляром. Это позволяет вам перенаправлять порты по своему усмотрению.
У вас есть два варианта.
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 для пересылки пакетов.
поскольку я видел комментарий об использовании 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 между ними, и мое веб-приложение не было видно, пока я не сбросил и не перезагрузил. Я знаю, что это ужасный образ, извините.