Я начинаю выдергивать волосы.
Используя Redhat / Apache, мы настроили три виртуальных хоста для обслуживания трех доменов на основе Drupal и четвертый виртуальный хост, настроенный для обслуживания Redmine через пассажира с одной машины.
Эта настройка подходит для всего трафика, все сетевые адреса могут разрешать все четыре домена. Из-за сетевой инфраструктуры рассматриваемый ящик использует прокси-сервер для просмотра внешнего мира.
Я попытался получить доступ к Redmine API из сценария на локальном компьютере, и получил ответ об ошибке:
While trying to retrieve the URL: http://projects/users.xml
The following error was encountered:
Unable to determine IP address from host name for projects
The dnsserver returned:
Name Error: The domain name does not exist.
This means that:
The cache was not able to resolve the hostname presented in the URL.
Check if the address is correct.
Доступ к API с внешнего компьютера обеспечивает ожидаемый ответ, поэтому API доступен, что заставляет меня думать, что это проблема только с Apache и / или PHP, разрешающими домен виртуального хоста от самого себя.
Я сделал обоснованное предположение, что это может быть проблема с прокси, что используемый прокси не знает DNS локальной сети, но я не знаю, как отключить прокси для проверки Apache, поскольку я не настроил этот сервер и не знаком с требованиями к прокси в целом.
Если я могу подтвердить, является ли это проблемой прокси-сервера, как мне сделать исключение для определенных доменов? Я предполагаю, что мне нужно использовать переменную среды NO_PROXY, но, опять же, я не знаю, как это сделать для пользователя Apache, и, что более важно, сброс переменных ENV для пользователя Apache не показывает значение HTTP_PROXY в все, поэтому я предполагаю, что Apache использует конфигурацию прокси в другом месте.
Я упускаю что-то очевидное?
РЕДАКТИРОВАТЬ: По запросу nslookup для домена возвращает:
$ nslookup projects
Server: 10.11.6.31
Address: 10.11.6.31#53
Name: projects.INNSERVE.LOCAL
Address: 10.11.6.48
РЕДАКТИРОВАТЬ 2: По запросу, wget результаты для рассматриваемого URL:
$ wget projects/users.xml
--2012-12-22 19:12:51-- http://projects/users.xml
Resolving projects... 10.11.6.48
Connecting to projects|10.11.6.48|:80... connected.
HTTP request sent, awaiting response... 401 Authorization Required
Authorization failed.
Я бы попробовал одно из следующего:
Добавить
domain example.com
search example.com
в /etc/resolv.conf
Или добавить
11.22.33.44 projects.example.com projects
в / etc / hosts
Любой из них может решить проблему с DNS.
В отчаянии нам удалось решить проблему, переопределив файлы хостов веб-сервера Apache. Раньше мы использовали Webmin для их настройки (в основном, я вручную создавал записи хостов проектов для обслуживания установки Redmine через пассажира).
Проблема заключалась в следующем:
Проекты определялись как виртуальный хост с номером порта:
<VirtualHost our.ip.address:80>
DocumentRoot /opt/redmine-2.1.2/public
ServerName projects
...
В то время как все остальные виртуальные хосты были определены без явной маркировки номера порта:
<VirtualHost our.ip.address>
DocumentRoot /var/www
ServerName address.domain.local
ServerAlias address
Это отлично работало во всех отношениях, кроме того, что Apache разрешал свои собственные виртуальные хосты.
Изменение оставшихся виртуальных хостов для включения номера порта, похоже, исправило это (и номера портов важны, поскольку мы используем несколько номеров портов по разным причинам, не относящимся к делу).