0

我正在尝试从 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 的区别很小。

我输入 tracs: 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。

4

0 回答 0