Как отладить соединение с компьютера на сервер, на стороне сервера - PullRequest
7 голосов
/ 15 марта 2019

Мой сервер Centos 7 работает под управлением Apache 2.4.6 и обслуживает веб-приложение django с помощью mod_wsgi. Моя проблема в том, что я не могу получить доступ к URL-адресу сервера из моего браузера с другого компьютера. Я не получаю никаких ошибок от Apache, и он работает и без проблем. Я установил в журнале ошибок файл debug в файле http.conf, но ошибок по-прежнему нет. Я знаю, что сервер на самом деле подключен к Интернету с помощью команды ping, я знаю, что он прослушивает порт 80:

netstat -tunlp | grep 80.

tcp        0      0 0.0.0.0:60080           0.0.0.0:*               LISTEN      3841/name-gu 
tcp6       0      0 :::80                   :::*                    LISTEN      13882/httpd  

Я временно отключил также все серверные брандмауэры

У моего settings.py есть URL, IP-адрес и localhost в ALLOWED_HOSTS

Как мне отладить эту проблему, чтобы у меня была ошибка, на которую я могу посмотреть?


Вход : Дайте мне знать, если нужно больше информации пробежал tcpdump -nn tcp port 80 на сервере затем запустил curl -v myurl.com на моей машине и получил эти результаты на моем сервере:

13:11:52.225076 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [S], seq 3327782620, win 29200, options [mss 1460,sackOK,TS val 36451589 ecr 0,nop,wscale 7], length 0
13:11:52.225355 IP 10.0.26.20.80 > 10.0.24.67.40658: Flags [S.], seq 1689726058, ack 3327782621, win 28960, options [mss 1460,sackOK,TS val 73904848 ecr 36451589,nop,wscale 7], length 0
13:11:52.225960 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [.], ack 1, win 229, options [nop,nop,TS val 36451590 ecr 73904848], length 0
13:11:52.226198 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [P.], seq 1:101, ack 1, win 229, options [nop,nop,TS val 36451590 ecr 73904848], length 100: HTTP: GET / HTTP/1.1
13:11:52.226448 IP 10.0.26.20.80 > 10.0.24.67.40658: Flags [.], ack 101, win 227, options [nop,nop,TS val 73904849 ecr 36451590], length 0
13:11:52.231414 IP 10.0.26.20.80 > 10.0.24.67.40658: Flags [P.], seq 1:286, ack 101, win 227, options [nop,nop,TS val 73904854 ecr 36451590], length 285: HTTP: HTTP/1.1 200 OK
13:11:52.232052 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [.], ack 286, win 237, options [nop,nop,TS val 36451596 ecr 73904854], length 0
13:11:52.232814 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [F.], seq 101, ack 286, win 237, options [nop,nop,TS val 36451597 ecr 73904854], length 0
13:11:52.233003 IP 10.0.26.20.80 > 10.0.24.67.40658: Flags [F.], seq 286, ack 102, win 227, options [nop,nop,TS val 73904856 ecr 36451597], length 0
13:11:52.233414 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [.], ack 287, win 237, options [nop,nop,TS val 36451597 ecr 73904856], length 0

1 Ответ

6 голосов
/ 19 марта 2019

Сначала я бы сосредоточился на проверке того, что вы можете получить доступ к некоторой статической тестовой странице на вашем сервере Apache, поскольку она прослушивает только порт IPv6 .(Это наиболее подозрительная информация, представленная на вашем сервере. Возможно, вы настроили только DNS для адреса IPv4 или не указали ping6 на адресе IPv6. Если это публичный сервер, вероятно, он должен прослушиватьнаконец, также на IPv4. Понятно, что ни один из сервисов не прослушивает TCP-порт 80 IPv4, ни прокси-сервер.) Если это не было проблемой, я опишу стратегию «отладки»:

... Отлично,Вы проверили некоторые полезные конкретные факты, но наиболее эффективная стратегия состоит в том, чтобы попытаться делить на части большую область возможных проблем на «половины» областей, которые можно проверить независимо, работают они или не работают, и какэто будет проявляться конкретно, если что-то в этой области будет нарушено.

Я бы посмотрел в журнал доступа /var/log/httpd/access_log (журнал Apache по умолчанию на CentOS), что Apache получил запрос ичто это был за код состояния и что размер ответа был нулевым или ненулевым и что все в порядке между Apache и браузером.Полезнее сначала проверить сервер одним запросом с того же сервера , прежде чем вы начнете подозревать брандмауэр и т. Д., Например, проверить его с помощью утилиты командной строки wget -S -O - http://mysite.example.com или curl -i http://mysite.example.com.Если вы проверяете что-либо с помощью браузера, вам следует использовать Инструменты разработчика Проверить (Ctrl + Shift + I), вкладка Сеть и посмотреть, связана ли проблема только с ответом или все еще с отправкой запроса.

В конечном итоге я также проверил бы, что регистрация из Python / Django работает и что вы смотрите на правильный Python log , например, добавив команду log.info("something") в конце models.py, не только потому, что вы не видите никакой ошибки.

Текст "Я не могу получить доступ к URL-адресу сервера из моего браузера" требует дополнительной информации, что именно подразумевается под ним.Буквально это будет означать, что проблема будет связана не с Django / Python, а между Apache и браузером, если он действительно не сможет начать подключаться и отправлять заголовки запроса.Отсутствующий ответ требует рассмотрения в первую очередь Django / Python.Даже ненастроенный Apache показывает тестовую страницу и может быть доступен по IP-адресу без действительного DNS: http; // numeric.ip.address.Вы можете убедиться, что вы можете временно настроить простой тестовый статический сайт в том же домене ...

РЕДАКТИРОВАТЬ Отладка продолжена с помощью ответов и предложений в комментариях и добавлением отформатированного журнала в вопросе.,Логический процесс важнее, чем только резюме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...