Назад | Перейти на главную страницу

Ошибка сервера Ubuntu Apache 503: отключено соединение для (localhost)

здесь немного связно. Я пытаюсь перенести веб-сайт (www.monkhouselaw.com) из одной хостинговой компании на свой Digital Ocean VPS. Я изменил настройки DNS на:

* -> 107.170.29.18
www -> 107.170.29.18
monkhouselaw -> 107.170.29.18

Затем он направляется на виртуальный хост Apache на моем VPS.

В настоящее время я просто пытаюсь загрузить одну страницу индекса PHP на свой сервер. Как только это заработает, я принесу установку WordPress. К сожалению, это не работает.

Доступ к www.monkhouselaw.com в настоящее время возвращает ошибку 503. Я просто не могу понять почему. Изучение журнала ошибок Apache показывает мне:

(111)Connection refused: AH00957: HTTP: attempt to connect to 127.0.0.1:3000 (localhost) failed
[Sun Jun 05 16:44:46.900331 2016] [proxy:error] [pid 2207] AH00959: ap_proxy_connect_backend disabling worker for (localhost) for 60s
[Sun Jun 05 16:44:46.900339 2016] [proxy_http:error] [pid 2207] [client 108.63.121.42:51559] AH01114: HTTP: failed to make connection to backend: localhost, referer: (long url)

А позже это:

[Sun Jun 05 16:45:21.841236 2016] [proxy:error] [pid 2198] AH00940: HTTP: disabled connection for (localhost)

Я попытался проверить, прослушивает ли порт 3000 на локальном хосте, и это не. Однако существует уже существующий виртуальный хост, который, насколько я понимаю, должен перенаправлять запросы с порта 3000 на порт 80. Это файл 000-default.conf. В файле есть гораздо больше, чем следующее, но вот важные части:

<VirtualHost *:80>
    ...

    LoadModule proxy_module {path-to-modules}/mod_proxy.so 
    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/

    ...       
</VirtualHost>

Хотя, честно говоря, я не уверен, почему он даже пытается получить доступ к порту 3000, поскольку файл виртуального хоста для monkhouselaw направлен на порт 80:

<VirtualHost *:80>
    DocumentRoot /var/www/monkhouse
    ServerName monkhouselaw.com
    <Directory "/var/www/monkhouse">
        allow from all
        Options None
        Require all granted
    </Directory>
</VirtualHost>

На данный момент я в растерянности. Поиск в Google показывает очень много результатов, касающихся SELinux, который, похоже, не установлен. Я видел, например, рекомендации набрать следующее:

togglesebool httpd_can_network_connect

Что просто возвращает мне сообщение о том, что программа togglesebool не существует.

По сути, это серьезная проблема, которую мне нужно решить, и я просматривал страницы результатов Google с двузначными числами, безуспешно пытаясь найти решения.

Кто-нибудь может предложить помощь?

Ваше понимание конфигурации apache немного обратное и перевернутое. Я бы посоветовал прочитать документацию по любому новому программному обеспечению, которое вы пытаетесь настроить. :)

Короче говоря, эта часть конфигурации вашего виртуального хоста:

<VirtualHost *:80>

... не имеет ничего общего с тем, как apache обрабатывает подключения к виртуальному хосту. Скорее, он настраивает слушатель который получает ваш запрос. В этом случае он прослушивает все IP-адреса (*), на порт 80 (80).

Вещи внутри объявления vhost описывают apache, как он должен обрабатывать соединения с этим виртуальным хостом. В случае предоставленного вами фрагмента он прослушивает порт 80 и направляет запросы на порт 3000, как и настроено. Вы не включили весь этот блок конфигурации, поэтому неясно, является ли это виртуальным хостом на основе имени.

Затем ваш второй фрагмент включает только monkhouselaw.com в качестве ServerName. Это единственное имя, которое вы можете использовать для этого сайта и ожидать, что все будет работать. Поскольку у вас все настроено, www.monkhouselaw.com будет не работай. Вам нужно добавить это как ServerAlias.