#amazon-web-services #http #amazon-ec2 #port
#amazon-веб-сервисы #http #amazon-ec2 #порт
Вопрос:
Я хочу открыть порт 80, чтобы разрешить HTTP-соединения на моем сервере EC2. Но когда я ввожу «telnet xx.xx.xx.xx 80» на терминале, отображается следующее
"Trying xx.xx.xx.xx..."
telnet: Unable to connect to remote host: Connection timed out
В AWS я открыл порт 80, определив входящее правило для группы безопасности (для этого сервера EC2 определена только одна группа безопасности)
Я использую общедоступный IPv4-адрес для установления соединения по telnet
Комментарии:
1.Существуют ли потенциально настройки брандмауэра, которые также необходимо отключить на удаленном сервере или другие настройки через консоль? Попробуйте (я делаю это, чтобы разрешить трафик для nginx на моих серверах):
sudo apt-get install ufw
sudo ufw allow 80
2. Есть ли у вас что-нибудь, работающее на порту 80? Вы можете протестировать, войдя в инстанс EC2 и запустив
curl localhost
его . Вы подключаетесь к общедоступному IP-адресу экземпляра? Изменили ли вы NaCl с их настроек по умолчанию «Разрешить все»?3. Я выполняю команду telnet из EC2. Я подключаюсь через SSH к серверу EC2. Итак, я думаю, брандмауэра нет.
4. Когда я делаю «curl localhost», появляется следующее сообщение: curl: (7) Не удалось подключиться к порту 80 локального хоста: отказано в подключении
5. Это новый сервер EC2, и программное обеспечение еще не установлено. И я подключаю общедоступный IPv4-адрес. смотрите скриншот.
Ответ №1:
Я заметил, что у вас новая установка — при новых установках по умолчанию программное обеспечение не прослушивается через HTTP.
Если приложение не прослушивает порт, входящие пакеты на этот порт будут просто отклонены операционной системой компьютера. Порты могут быть «закрыты» с помощью брандмауэра, который вы отключили, поэтому открытые порты просто не отвечают, что делает их закрытыми.
Если порт включен в брандмауэре в терминале с помощью
sudo apt-get install ufw
sudo ufw allow ssh
sudp ufw allow https
sudo ufw allow http
sudo reboot
и включен в консоли aws, как правило, порт открыт и просто не реагирует, поэтому он считается закрытым. При установке nginx или чего-либо, что привязывается к порту 80, внешние запросы к этому порту будут успешно подключены, и поэтому порт будет признан открытым. Причина, по которой ssh распознается как открытый, заключается в том, что 1. он имеет прозрачность брандмауэра и 2. он всегда прослушивается (в отличие от порта 80!).
Перед установкой nginx, даже если порты разрешены через брандмауэр:
sudo apt-get install nginx
sudo ufw allow 'Nginx HTTP'
sudo systemctl status nginx
(дополнительная информация о nginx)
Простой инструмент для тестирования портов здесь