Я размещаю клиентский сайт wordpress на сервере CentOS 7 с apache 2.4.6, размещенном за прокси-сервером cloudflare. Я настроил все около 8 месяцев назад, и с тех пор все работает нормально.
Около 5:30 утра веб-сайт отключился, показав таймауты. Я проверил логи, в /var/log/httpd/error_log
Я нашел следующие записи примерно в то время, когда сайт перестал работать:
[Thu Sep 19 04:35:57.343495 2019] [mpm_prefork:notice] [pid 13447] AH00170: caught SIGWINCH, shutting down gracefully
[Thu Sep 19 04:35:58.598479 2019] [core:notice] [pid 22161] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
[Thu Sep 19 04:35:58.602722 2019] [suexec:notice] [pid 22161] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
[Thu Sep 19 04:35:58.638160 2019] [lbmethod_heartbeat:notice] [pid 22161] AH02282: No slotmem from mod_heartmonitor
[Thu Sep 19 04:35:58.701474 2019] [mpm_prefork:notice] [pid 22161] AH00163: Apache/2.4.6 (CentOS) PHP/5.4.16 configured -- resuming normal operations
[Thu Sep 19 04:35:58.701545 2019] [core:notice] [pid 22161] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
С тех пор единственные записи в access_log
были от местных запросов.
Для отладки я отключил прокси-сервер Cloudflare (теперь DNS указывает прямо на мой сервер), и у меня есть только index.html
файл в корне сети. если я бегу wget mydomain.com
локально на машине я получаю содержимое своего теста index.html
нормально, и запись появляется в access_log
. Если я попробую сделать то же самое на внешнем сервере, я получу следующую ошибку, а в access_log нет записи:
(mydomain.com)|<the server's ip>|:80... failed: Resource temporarily unavailable
Я дважды проверил конфигурацию iptables, но она не менялась с мая, поэтому я почти уверен, что это не проблема брандмауэра.
Я также перезапустил httpd, mariadb и перезагрузил сервер, но безрезультатно.
Есть ли что-нибудь еще, что может вызвать эти проблемы с apache?
Если это помогает, сервер размещается в облаке Rckspace, а конфигурации максимально приближены к значениям по умолчанию; Я не настраивал VirtualHosts или что-то в этом роде.
Вот результат netstat -l -n -t -p
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1459/master
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1383/mysqld
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1500/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1459/master
tcp6 0 0 :::443 :::* LISTEN 1110/httpd
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::80 :::* LISTEN 1110/httpd
tcp6 0 0 :::22 :::* LISTEN 1500/sshd
вывод nmap
Not shown: 999 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4 (protocol 2.0)
Посмотрев на вывод nmap
, становится очевидно, что порты http (s) не отображаются. Это дополнительно подтверждается запуском firewall-cmd --list-all
на сервере:
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0 eth1
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
чтобы исправить это, запустите: firewall-cmd --add-service=https --permanent
. Вы можете подтвердить, что это работает, запустив firewall-cmd --list-all
снова и посмотреть, если http
появляется в services:
раздел.
После этого apache chan снова увидит все внешние запросы.