Вот моя установка. У меня есть виртуальная машина с установленным Oracle Linux 7. Я начал apache с service httpd start
и все началось без проблем. Я создал index.html
файл в обоих /var/www/html
и /var/www
. Я могу подключиться к виртуальной машине с моего хост-компьютера, используя ping
или ssh
, но когда я открываю веб-браузер и перехожу к IP-адресу, сервер не отвечает.
Я проверил netstat -plent
и это показывает, что порт 80 прослушивает:
# netstat -plent
tcp6 0 0 :::80 :::* LISTEN 0 121584 36432/httpd
Я смотрел в несколько ответы которые предполагают, что iptables может быть проблемой, но ни одно из этих решений не помогло. Что еще может вызвать проблему?
Вы забыли открыть порт в брандмауэре.
Например.
firewall-cmd --add-service=http
Запомни сделать это постоянным также.
Вы слушаете только IPv6, используя вывод netstat.
Вам нужно либо получить доступ к веб-сайту только с помощью IPv6, либо создать другую директиву прослушивателя в apache для прослушивания 0.0.0.0:80. В httpd.conf:
Listen 0.0.0.0:80
Конечно, вы можете прослушивать только тот IP-адрес, с которого хотите обслуживать трафик.
Однако этот совет неверен, если у вас есть поддержка сокетов с двойным стеком в Linux. Вам может потребоваться только проверить, включено ли прослушивание двойного стека. Используя procfs, проверьте этот файл:
/proc/sys/net/ipv6/bindv6only
Если это не 0, вам нужно изменить его в своей конфигурации на 0 или явно прослушивать IPv4.
Также проверьте правила вашего брандмауэра; если вы отклоняете трафик на ipv4 или ipv6, это объяснит это. Проверить здесь:
iptables -t filter -nvL INPUT
ip6tables -t filter -nvL INPUT
Если политика по умолчанию не ACCEPT, и у вас нет правила, разрешающего HTTP-трафик, или если у вас есть правила, блокирующие его, это объясняет.