Я пытаюсь настроить nginx с обратным прокси-сервером для tracd, однако я хочу использовать только 1 tracd.
Теперь сначала моя конфигурация для этого домена
server {
listen 80;
server_name bugs.XXXXXXXX.com;
access_log /var/log/nginx/XXXXXXXX-bugtracker.access.log proxy;
location / {
rewrite ^/bugtracker/(.*)$ /$1;
rewrite ^/bugtracker$ /;
proxy_pass http://127.0.0.1:81/bugtracker/;
proxy_redirect default;
proxy_set_header Host $host;
}
location ~ /\.ht {
deny all;
}
}
Как видите, существуют правила перезаписи, потому что по какой-то причине все URL-адреса, которые выводит tracd, похожи на / bugtracker / something.
Теперь это действительно вызвано тем, что tracd просто отправляет URL-адреса, как обычно, однако trac находится на bugs.XXXXXXXX.com/, а не на bugs.XXXXXXXX.com/bugtracker. Итак, как я могу заставить tracd / trac отображать (в этом случае) правильные URL-адреса?
На работе у нас есть проектная среда с множеством экземпляров trac (каждый из которых работает от имени другого пользователя), поэтому мы не можем позволить, чтобы процессы WSGI выполнялись для всех из них одновременно. Таким образом, я настраиваю множество виртуальных хостов apache + itk + suexec + fastcgi в качестве восходящих прокси-серверов nginx (каждый проект имеет 1 виртуальный хост для trac и 1 виртуальный хост для svn).
Мы не хотим добавлять одно местоположение в nginx для каждого экземпляра trac и svn, поэтому, потратив несколько дней на борьбу с директивами прокси nginx с помощью регулярных выражений, я обнаружил, что в trac.ini (с версии 0.10.5) есть пара параметров, которые могут быть используется для изменения местоположения перенаправления по умолчанию.
В вашем случае это должно было быть примерно так:
base_url = http://bugs.XXXXXXXX.com/
use_base_url_for_redirect = True
И затем перенаправления apache (или перенаправления tracd в вашем случае) должны указывать на общедоступный URL-адрес проекта, а не на trac default.
Видеть http://trac.edgewall.org/wiki/TracIni для более подробной информации.
location / {
proxy_pass http://127.0.0.1:81/;
proxy_redirect default;
proxy_set_header Host $host;
}
Я перешел на использование встроенного сервера WSGI, поскольку он предназначен для производственной среды, а tracd - нет.
он работает нормально, и у меня нет такой проблемы, как у меня с tracd.