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

tracd несколько проектов + обратный прокси nginx

Я пытаюсь настроить 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.