LinuxForum.Fans
Тема

Apache не отвечает на запросы

Автор: jeka0506 26 сообщений 1549 просмотров
05.03.2019 10:31 #430946

Добрый день.
Неожиданно возникла следующая проблема. Есть два ПК, на обоих установлена ОС Linux (дистрибутив не имеет значения) При открытии веб-сайта с одного ПК, все открывается отлично, при открытии со второго, у первого виснет страница, и при обновлении, после тайм-аута выдается сообщение о недоступности сайта. tcpdump`ом видно, что пакеты с первого ПК прилетают на сервер, но Apache на них не отечает, в логи апача (var/log/http), или системные логи (/var/log/secure, /var/log/messages) никаких данных не падает. Отключение фаерволла никаких изменений не принесло. Также если у этих устройств поменять сетевые адреса, ничего не меняется, тот у которого открывалось и раньше - все также работает, тот, у которого не открывалось - нет.

При этом через 60 секунд у первого (которого висло открытие), все начинает работать, но ровно до момента пока второй не обновит страницу

Если повторить туже процедуру на двух ПК с ОС Windows, проблем нет, оба ПК работают нормально.

Подскажите, пожалуйста, если кто-то сталкивался, в чем может быть проблема, или хотя бы в какую сторону копать

05.03.2019 12:46 #430953
"jeka0506" написал:
дистрибутив не имеет значения

Имеет. Файлы конфигурации могут различаться в разных дистрибутивах, в том числе и быть расположены по другим адресам. Так что укажите дистрибутив. И дайте результат вывода:
[console=root]service apache2 status[/console]

05.03.2019 13:54 · отредактировано #430954
Rizado написал:
[quote="jeka0506"]дистрибутив не имеет значения

Имеет. Файлы конфигурации могут различаться в разных дистрибутивах, в том числе и быть расположены по другим адресам. Так что укажите дистрибутив. И дайте результат вывода:
[console=root]service apache2 status[/console][/quote]

[console][root@ ~]# service apache2 status
apache2: unrecognized service
[root@ ~]# service httpd status
httpd (pid 16371) is running..[/console]

Пробовали на нескольких дистрибутивах, в том числе с андроид мобилок
в частности, Linux Mint, Ubuntu, Android 8 (его в принципе тоже можно в какой-то мере считать линукс терминалом)

Я наверное, некорректо обхяснил. ПК с Линуксом в данном случае используются как терминалы, клиентские машины. В качестве сервера используется сервак на CentOS6.
Т.е. проблема в том, что когда два юзера открывают сайт, работая за ПК с Линукс (вышеуказанные дистрибутивы тестировались), то у первого ПК виснет сайт и не получают ответа запросы к веб-серверу. Когда этиже два юзера с тех же ПК, но с установленной на них виндой подключаются к серверу - все работает отлично

05.03.2019 14:16 #430955

jeka0506, я о чём и говорю, что дистрибутив имеет значение. Даже названия демона разные, у меня это как раз Apache2.
Вообще, при условии отправки на сервер корректного запроса серверу вообще всё равно, с чего вы к нему подключаетесь, хоть с деревянных счётов :) . Я в своё время эксперимента ради ставил useragent «ZX-Spectrum» и «MK-52», даже в таком варианте сайты отображались корректно.
Вы уверены, что проблема в сервере? Выкладывайте конфиги Apache, посмотрим. Только используйте BB-коды «код» и «спойлер» :) .

05.03.2019 14:47 #430956
Rizado написал:
jeka0506, я о чём и говорю, что дистрибутив имеет значение. Даже названия демона разные, у меня это как раз Apache2.
Вообще, при условии отправки на сервер корректного запроса серверу вообще всё равно, с чего вы к нему подключаетесь, хоть с деревянных счётов :) . Я в своё время эксперимента ради ставил useragent «ZX-Spectrum» и «MK-52», даже в таком варианте сайты отображались корректно.
Вы уверены, что проблема в сервере? Выкладывайте конфиги Apache, посмотрим. Только используйте BB-коды «код» и «спойлер» :) .

Ну да, я понимаю, что страницу открывает браузер, а не ОСь :) собственно, потому и оказался в тупике

Что-то конфиг апача загрузить не дает, выдает ошибку о том, что много ссылок, хотя я даже все ServerName позаменял с example.com на example com

05.03.2019 15:05 #430957

jeka0506,
[console=root]service https status[/console]
И смотри́те, что не так. Выложите лог на pastebin и дайте ссылку.

05.03.2019 15:17 · отредактировано #430958
Rizado написал:
jeka0506,
[console=root]service https status[/console]
И смотри́те, что не так. Выложите лог на pastebin и дайте ссылку.

Вот ссыль на конфиг апача:

https://pastebin.com/EWBiBx1L

а в логе, как я писал выше ничего нет, при удачном коннекте (первого или второго ПК, не важно), в логах стандартные ответы 200 и отдаваемые страницы, а когда у первого ПК коннект пропадает, то сервис не отвечает даже на пакеты и ни в какие логи никаких данных не падает

05.03.2019 17:43 #430960

jeka0506, а вот это с какой непонятной целью делалось?

text
ServerName default
DocumentRoot /var/www/html/default
text
DocumentRoot /var/www/html
ServerName server.com

При этом оба виртуальных хоста активны?

05.03.2019 18:02 #430961
Rizado написал:
jeka0506, а вот это с какой непонятной целью делалось?
text
ServerName default
DocumentRoot /var/www/html/default
text
DocumentRoot /var/www/html
ServerName server.com

При этом оба виртуальных хоста активны?

Это сделано для безопасности, как заглушки, чтобы по ip адресу на сервер не зашли, а только по домену

05.03.2019 18:06 #430962

jeka0506, вы не поняли. У вас один виртуальный хост в подкаталоге второго. Смысл этого действия?
Доступнее. Представьте, что вы делаете два сайта, например о котятах (_kittens.site) и о вампирах (_vampires.site). И у вас сайт о вампирах будет открываться не только по его прямому адресу, но и по адресу _kittens.site/default/. Вот зачем так делать?

P.S. Подчёркивание в начале адресов сделал, чтобы форум не превращал в ссылки.

05.03.2019 18:11 · отредактировано #430963

а, Вы о директориях, для ВХостов default и server.com они лежат в разных директориях, просто для безопасности я изменил пути перед отправкой конфига в интернет :)
Что-то вроде такого
Для default - /var/www/html
Для server.com - /opt/project/html/

05.03.2019 18:18 #430964

"jeka0506" написал:
чтобы по ip адресу на сервер не зашли, а только по домену
для этого modrewrite существует.
Да и в чём здесь безопасность то?
05.03.2019 18:19 #430965

DiabloPC написал:
[quote="jeka0506"]чтобы по ip адресу на сервер не зашли, а только по домену
для этого modrewrite существует[/quote]

Спасибо, учту на будущее
05.03.2019 18:20 #430966
"jeka0506" написал:
просто для безопасности я изменил пути перед отправкой конфига в интернет

Ну тогда вам в общество телепатов. Никто не обязан угадывать, что вы выложили не рабочий файл, а изменённый.

05.03.2019 18:24 · отредактировано #430967
Rizado написал:
[quote="jeka0506"]просто для безопасности я изменил пути перед отправкой конфига в интернет

Ну тогда вам в общество телепатов. Никто не обязан угадывать, что вы выложили не рабочий файл, а изменённый.[/quote]


Я там изменил только доменное имя и поудалял комментарии из стандартного конфиг-файла httpd.conf

https://pastebin.com/08SqqQxw

вот тот же конфиг, но с корректными путями к директориям с файлами.

Из измененного только доменное имя сервера и названия сертификатов для https. Я не могу указать название домена, с названием организации, но, не думаю, что проблема в доменном имени :)

05.03.2019 19:02 #430968

jeka0506,Таки стоит вот так сделать:

Показать
[console]cat httpd.conf.diff
--- httpd.conf.old 2019-03-05 17:57:16.238858285 +0200
+++ httpd.conf 2019-03-05 17:58:25.775776734 +0200
@@ -293,33 +293,6 @@
NameVirtualHost *:80
NameVirtualHost *:443


-
-<VirtualHost *:80>
- ServerName default
- DocumentRoot /var/www/html/default
- ErrorLog /var/log/httpd/default-error.log
- CustomLog /var/log/httpd/default-access_log common
- <Directory /var/www/html/default>
- Order allow,deny
- Allow from all
- </Directory>
-</VirtualHost>
-
-<VirtualHost *:443>
- ServerName default
- DocumentRoot /var/www/html/default
- ErrorLog /var/log/httpd/default-error.log
- CustomLog /var/log/httpd/default-access_log common
- SSLEngine on
- SSLCertificateFile /etc/ssl/certs/example.crt
- SSLCertificateKeyFile /etc/ssl/private/example.key
- <Directory /var/www/html/default>
- Order allow,deny
- Allow from all
- </Directory>
-</VirtualHost>
-
-

<VirtualHost *:80>
ServerAdmin mail@mail.ru
DocumentRoot /opt/osdial/html

[/console]

Ибо вообще непонятно как при наличии двух разных конфигов на один vhost оно запускает httpd, а не вываливается с ошибкой.

Сейчас по сути там вот такое написано:
[console]<VirtualHost *:80>
Иди налево
</VirtualHost>


<VirtualHost *:80>
Иди напрво
</VirtualHost>
[/console]
Ну и как это должно работать??

05.03.2019 19:07 #430969
DiabloPC написал:
Сейчас по сути там вот такое написано:
[console]<VirtualHost *:80>
Иди налево
</VirtualHost>


<VirtualHost *:80>
Иди напрво
</VirtualHost>
[/console]
Ну и как это должно работать??

Понял, попробую убрать лишний ВХост, спасибо. По результату напишу

05.03.2019 19:08 #430970

"jeka0506" написал:
лишний ВХост
Два лишних: один *:80, второй *:443
05.03.2019 19:12 #430971
"DiabloPC" написал:
Два лишних: один *:80, второй *:443

Да там, похоже, http и https пытается одновременно. А не проще редирект?

text
<VirtualHost *:80>
    …
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =www.domain.ru [OR]
    RewriteCond %{SERVER_NAME} =domain.ru
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
05.03.2019 19:23 #430972

Rizado, думаю не критично, в любом случае если адресс обращения был http:// то запрос на :80 прилетит, а если https:// - на :443,
А вот то что в конфиге одни и те-же запросы в разные стороны адрусуются - ото интересно))
Добавлено: 5th Mar 2019 6:23:09 pm

"Rizado" написал:
<VirtualHost *:80>
…
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.domain.ru [OR]
RewriteCond %{SERVER_NAME} =domain.ru
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
Так сразу уже
text
RewriteRule ^ https://domain.com/%{REQUEST_URI} [END,NE,R=permanent]

Заодно любые запросы по IP будут адресоваться на domain.com

Войдите или зарегистрируйтесь, чтобы ответить.