nginx с tracd и subs_filter

Пытаюсь перейти с apache на nginx. Одна из проблем - миграция многосайтовой трассировки.

Согласно TracNginxRecipe я создал скрипт tracd:

      /usr/bin/tracd --daemonize --pidfile=/var/run/tracd.pid --port=3050 --hostname=127.0.0.1 --env-parent-dir=/var/lib/trac/

и модифицировал /etc/nginx/sites-enabled/example.com.conf

      (...)
upstream tracd {
  server 127.0.0.1:3050;
}

(...)
 location ~ /(.*?)/chrome/ {
                rewrite /(.*?)/chrome/(.*) /$1/htdocs/$2 break;
                root    /var/lib/trac;
  }
  location /trac/ {
    keepalive_timeout    70;
    add_header           Front-End-Https    on;
    proxy_set_header Accept-Encoding "";
    proxy_pass http://tracd/;
    subs_filter 'http://tracd/' 'https://example.com/trac/' g;
    sub_filter_once off;

  }
(...)

И вуаля! Оно работает. Почти. Потому что между nginx и tracd есть небольшая разница.

Вхожу в траки: https://example.com/trac/my_trac, но tracd изучает https://127.0.0.1/my_trac. Что должно быть нормально, но trac считает, что uri /my_trac так что все ссылки без /trac/, например. https://example.com/my_trac/login вместо https://example.com/trac/my_trac/login

Я пробовал использовать subs_filter

      subs_filter '://example.com/' '://example.com/trac/' g;
sub_filter_once off;

но ничего не происходит ...

Я думаю, что могу заставить trac добавить его в uri, но я предпочитаю модифицировать nginx, потому что если мне нужно перейти на другую систему, я не хочу изменять trac.

0 ответов

Другие вопросы по тегам