(Сервер Plesk 10.4 centos 5.8 linux apache2, с Tomcat5 на порту 8080 и Apache Solr)
Я получаю сообщение «Время ожидания соединения истекло» при запросе domain.com:8080 или www.domain.com:8080 или ip.ad.dr.ess: 8080
Все причины, по которым я могу найти, почему это может быть, кажутся не так:
netstat -lnp | grep 8080
дает следующее, которое я верь означает, что Tomcat прослушивает запросы к порту 8080 на всех IP-адресах с любого IP-адреса и любого порта (исправьте меня, если я ошибаюсь)::
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 4018/java
Это покрывает все причины этого тайм-аута, которые я могу найти - так что я, должно быть, упускаю что-то фундаментальное.
Кажется, что Tomcat работает, прослушивает правильный порт, получает соответствующий IP-адрес, ему не мешает брандмауэр, и он не дает сбоев после получения запроса способом, который будет записан в журналы (так что я считаю, что это возможно) не хватает памяти или что-то в этом роде).
У меня нет идей, как продолжить отладку. Должно быть, я пропустил что-то очевидное. Кто-нибудь может помочь?
Ну, оказывается, есть межсетевые экраны, а есть брандмауэры.
Я ни в коем случае не предполагал, что установки правила разрешения доступа для порта в пользовательском интерфейсе брандмауэра Parrallels / Plesk / VZ было достаточно, чтобы брандмауэр не блокировал доступ к этому порту. Я был неправ, этот пользовательский интерфейс не затрагивает полностью отдельный уровень межсетевого экрана на основе iptables, который блокировал доступ к 8080 для всех IP-адресов, кроме выбранных.
В моей настройке Plesk (которая может быть специфичной для моего хостинга, я не уверен) решение заключалось в том, чтобы добавить правила в /etc/firewall/include
которые выглядят так:
$IPTABLES -I INPUT -p tcp --dport 8080 -s ip.ad.dr.ess -j ACCEPT
$IPTABLES -I OUTPUT -p tcp --sport 8080 -d ip.ad.dr.ess -j ACCEPT
...с последующим service firewall restart
(замена ip.ad.dr.ess на IP-адреса, которые вы хотите добавить в белый список). Я почти уверен, что в большинстве случаев хостинга вы можете просто запускать эти строки как команды с /sbin/iptables
вместо того $IPTABLES
, но иметь файл с пользовательскими настройками брандмауэра очень удобно.
Я предполагаю, что это случай «Если вы дадите человеку костыль (например, Plesk), он решит, что может опереться на этот костыль»