Доступ к моему серверу AWS EC2 index.html из внешнего браузера

На этой неделе я настраивал сервер AWS EC2 и почти закончил то, что хочу. Но открытие в качестве веб-сервера оказалось камнем преткновения.

МОИ НАСТРОЙКИ

У меня есть экземпляр AWS EC2, на котором работает Red Hat EL7.

У меня есть сервер Apache, работающий на моем экземпляре:

[ec2-user@ip-172-xx-xx-xx ~]$ ps -ef | grep -i httpd
root     18162     1  0 18:02 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   18163 18162  0 18:02 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   18164 18162  0 18:02 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   18165 18162  0 18:02 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   18166 18162  0 18:02 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   18167 18162  0 18:02 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
ec2-user 21345 20507  0 19:03 pts/1    00:00:00 grep --color=auto -i httpd

Кажется, он прослушивает порт 80:

[root@ip-172-xx-xx-xx ~]# netstat -lntp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      18162/httpd   

Я добавил входящие правила в группу безопасности «launch-wizard-1» (которая показана как группа безопасности для экземпляра) для портов 80 (HTTP) и 443 (HTTPS) с источниками «0.0.0.0/0» и « ::/0"

И, наконец, для тестирования моей установки я создал файл index.html в корневом каталоге моего документа (/var/www/html):

<html>
<h1>TEST!</h1>
</html>

ПРОБЛЕМА

Из моего браузера Chrome на моем компьютере, когда я пытаюсь нажать:

http://ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com/index.html

Я просто получаю:

This page isn’t working
ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com didn’t send any data.
ERR_EMPTY_RESPONSE

(Я получаю то же самое, когда нажимаю на одно из своих доменных имен, которые я там настроил, что я на самом деле пытаюсь сделать, конечно же!)

Я пытался подключиться из Chrome на двух разных компьютерах и из Safari на своем телефоне («Safari не может открыть страницу, потому что не может подключиться к серверу»)

ПРОВЕРКИ, ВЫПОЛНЕННЫЕ МНОЙ

Я не верю, что у меня есть брандмауэр сервера, предотвращающий это:

[root@ip-xx-xx-xx-xx conf]# /sbin/iptables -L -v -n
Chain INPUT (policy ACCEPT 3575 packets, 275K bytes)
pkts bytes target     prot opt in     out     source               destination         


Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         


Chain OUTPUT (policy ACCEPT 2215 packets, 350K bytes)
 pkts bytes target     prot opt in     out     source               destination   

Тестирование с помощью telnet из сеанса терминала на моем Mac, порт 80 кажется открытым. Во-первых, используя общедоступный IP-адрес IPv2:

telnet 18.xxx.xxx.xx 80

Trying 18.xxx.xxx.xx...
Connected to ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com.
Escape character is '^]'.
Connection closed by foreign host.

и используя общедоступный DNS (IPv4):

telnet ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com 80

Trying 18.xxx.xxx.xx...
Connected to ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com.
Escape character is '^]'.
Connection closed by foreign host.

И снова то же самое касается моих доменных имен - телнет на порт 80 показывает "Подключено".

– Имеет ли значение тот факт, что "внешний хост" немедленно закрывает соединение? Должен ли он оставаться открытым, если все работает как надо?

Запуск curl на хосте корректно возвращает мой простой файл index.html:

[ec2-user@ip-172-xx-xx-xx ~]$ curl localhost
<html>
<h1>TEST!</h1>
</html>

Однако запуск curl на моем локальном компьютере — на сервере — возвращает:

curl -v http://ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com:80
* Rebuilt URL to: http://ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com:80/
*   Trying 18.xxx.xxx.xx...
* Connected to ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com (18.xxx.xxx.xx) port 80 (#0)
> GET / HTTP/1.1
> Host: ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com
> User-Agent: curl/7.43.0
> Accept: */*
> 
* Empty reply from server
* Connection #0 to host ec2-18-xxx-xxx-xx.us-east-2.compute.amazonaws.com left intact
curl: (52) Empty reply from server

Я также протестировал веб-сервер «внутри», запустив google chrome (безголовый) на сервере, чтобы создать снимок экрана, загруженный на мой локальный компьютер, и он показывает TEST! (т.е. работает):

google-chrome-stable --headless --disable-gpu --screenshot     http://localhost

Еще одна вещь, которую нужно добавить: когда я пытаюсь попасть на веб-сервер с моей локальной машины, в журналах веб-сервера (error_log или access_log) на сервере ничего не отображается.

Итак, мое мнение таково, что веб-сервер запущен и работает локально, но не работает корректно для всего, что приходит «извне». Хотя сейчас я в тупике.


person user3253319    schedule 20.12.2018    source источник
comment
Что произойдет, если вы попробуете curl localhost с самого сервера? Таким образом, он тестирует веб-сервер без влияния каких-либо сетевых конфигураций.   -  person John Rotenstein    schedule 21.12.2018
comment
Извините - нужно было сказать, что я это сделал, и это сработало; вернул HTML моего простого index.html   -  person user3253319    schedule 21.12.2018


Ответы (2)


Дох! Я перезагрузил экземпляр и... теперь все работает!

22 года работы с компьютерами, и мне понадобилось 22 часа, чтобы прибегнуть к перезагрузке. Дурак!

person user3253319    schedule 21.12.2018

  1. Подключитесь к своему EC2 instance с помощью ssh на terminal
  2. Установите python, если он не установлен
  3. Запустите сервер Python, используя nohup, чтобы постоянно использовать сервер

    nohup python -m http.server &

  4. Обычно это открытый порт 8000, перейдите к EC2 Security Group, сделайте источник anywhere или по мере необходимости.

введите здесь описание изображения

  1. Перейдите в папку с index.html, путь к файлу будет выглядеть так, как показано ниже.

    http://ec2---.compute-1. amazonaws.com:8000/папка/веб-сайт/

Вы сможете развиваться и видеть свои изменения по мере необходимости.

person Harry_pb    schedule 10.02.2020