Я использую экземпляр EC2 с AWS Linux. Там есть веб-сайт на порту 8888, поэтому, если с виртуальной машины я запускаю curl "http://127.0.0.1:8888/login"
Я получаю сайт.
Я хочу получить к нему доступ извне, поэтому я установил правило в группе безопасности, прикрепленной к экземпляру:
Custom TCP Rule TCP 8888 0.0.0.0/0
Когда я пытался получить к нему доступ из моего браузера или командной строки, я получаю тайм-аут
curl "http://xx.yy.zz.ff:8888/login"
куда xx.yy.zz.ff
- эластичный IP-адрес, прикрепленный к экземпляру (который я использую для подключения к виртуальной машине через SSH).
Интересно, что я могу получить к нему доступ на http://localhost:8888/login
если я сначала выполняю SSH-туннелирование:
ssh -i my-key.pem -NL 8888:localhost:8888 me@xx.yy.zz.ff
Если я сделаю sudo netstat -tulpn, я получу
tcp 0 0 127.0.0.1:8888 0.0.0.0:* LISTEN 26531/python
И если я do sudo ss -aut | grep 8888
Я вообще ничего не получаю.
Любые идеи?
tcp 0 0 127.0.0.1:8888 0.0.0.0:* LISTEN 26531/python
Ну вот и ответ. Ваш веб-сервер (процесс Python) прослушивает только ваш интерфейс localhost. Таким образом, вам нужно либо перенастроить его, чтобы прослушивать внешний сетевой интерфейс вашего EC2. или установите nginx для использования в качестве обратного прокси.