У меня проблемы с настройкой mod_proxy и tracd. Кажется, почти все результаты поиска по этой проблеме приводят меня на страницу встроенной документации trac, где она упоминается как опция.
У меня уже работает несколько VirtualServer на рассматриваемом компьютере, поэтому запуск tracd на порте 80 или 443 не вариант, но я хочу сделать мой сервер trac доступным на этом компьютере, не открывая дополнительный порт через брандмауэр.
Еще более сложным является то, что у меня есть несколько репозиториев trac, обслуживаемых одним и тем же экземпляром tracd, и поэтому я хочу настроить его так: http://trac.abc.com прокси на localhost:8000/projects/abcproject
, и http://trac.def.com прокси на localhost:8000/projects/defproject
.
В настоящее время приведенная ниже настройка приводит к 100% ошибкам 403. Сервер работает как www-data, а каталог, в котором хранятся все файлы trac, принадлежит www-data, И tracd (как показано ниже) работает как www-data, поэтому не уверен, где он зависает.
Соответствующая конфигурация на /var/apache2/sites-enabled/trac.abc.com
:
ProxyPass / http://localhost:8000/abcproject
ProxyPassReverse / http://localhost:8000/abcproject
Соответствующая конфигурация на /var/apache2/sites-enabled/trac.def.com
:
ProxyPass / http://localhost:8000/defproject
ProxyPassReverse / http://localhost:8000/defproject
Команда, используемая для создания экземпляра tracd:
tracd -a defproject,/var/www/vhosts/trac-common/users.htdigest,DEFProject -a abcproject,/var/www/vhosts/trac-common/users.htdigest,ABCProject -p 8000 -b localhost -e /var/www/vhosts/trac-common/projects
Если я захожу на сайт по адресу http://localhost:8000/
все работает нормально, но если я пытаюсь получить доступ через любой из прокси-хостов, я получаю 403 на каждом шагу.
Я успешно использовал mod_proxy, как описано выше, для других серверов, таких как couchdb, так что, возможно, это связано с заголовками, отправленными tracd ??
В конфиге apache тоже есть такой блок:
ProxyRequests Off
<Proxy http://127.0.0.1:8000/*>
Order deny,allow
Allow from all
</Proxy>
Это необходимый роман.
Ошибка 403, похоже, указывает на проблему с разрешениями, а не на проблему с сервером (5xx). Может проблема в файле htdigest?
Что ваш журнал ошибок Apache сообщает по этому поводу? Сообщает ли он о чем-то неприятном? Также посмотрите журналы трассировки, чтобы узнать, доходит ли запрос до серверной части и умирает, или это Apache, который выдает ошибку.
Попробуйте добавить косую черту в конце и "ProxyPreserveHost On"
ProxyPreserveHost On
ProxyPass / http://localhost:8000/abcproject/
ProxyPassReverse / http://localhost:8000/abcproject/
Что произойдет, если вы попробуете следующее:
ProxyPreserveHost On
ProxyPass /abcproject http://localhost:8000/abcproject
ProxyPassReverse /abcproject http://localhost:8000/abcproject
Вы изучали запуск Trac через FastCGI? http://trac.edgewall.org/wiki/TracFastCgi
Тогда вам не придется беспокоиться о том, что trac остановится на другом порту.