带有根 url 路径的 gitweb nginx

带有根 url 路径的 gitweb nginx

我有一个非常奇怪的问题:我配置了一个 nginx 服务器

server {
    listen unix:/home/ingo/repositories/run/gitweb.nginx;
    server_name _;
    access_log /home/ingo/repositories/log/proxy.log main;
    error_log /home/ingo/repositories/log/proxy.log debug;


    # static repo files for cloning over https
    location ~ ^.*\.git/objects/([0-9a-f]+/[0-9a-f]+|pack/pack-[0-9a-f]+.(pack|idx))$ {
            root /home/ingo/repositories;
    }

    # requests that need to go to git-http-backend
    location ~ ^.*\.git/(HEAD|info/refs|objects/info/.*|git-(upload|receive)-pack)$ {
            root /home/ingo/repositories;
            fastcgi_param SCRIPT_FILENAME    /home/ingo/repositories/git-http-backend;
            fastcgi_param PATH_INFO              $uri;
            fastcgi_param GIT_PROJECT_ROOT  /home/ingo/repositories;
            fastcgi_param GIT_HTTP_EXPORT_ALL "";
            fastcgi_pass  unix:/home/ingo/repositories/run/gitweb.sock;
            include fastcgi_params;
    }

    location / {
        root /home/ingo/repositories/;
        gzip off;
        fastcgi_param PATH_INFO $uri;
        fastcgi_param SCRIPT_FILENAME /home/ingo/repositories/gitweb.cgi;
        fastcgi_param GITWEB_CONFIG /home/ingo/repositories/etc/gitweb.conf;
        fastcgi_pass  unix:/home/ingo/repositories/run/gitweb.sock;
        include fastcgi_params;
    }
}   

并使用我的默认虚拟主机的子路径(我实际上不喜欢虚拟主机名):

    location = /repos { rewrite ^ /repos/ redirect; }
    location /repos/ {
        access_log /home/ingo/repositories/log/proxy.log main;
        error_log /home/ingo/repositories/log/proxy.log debug;
        location /repos/ {
            proxy_pass http://unix:/home/ingo/repositories/run/gitweb.nginx:/;
            sub_filter 'href="' href="/repos/;
            sub_filter_once off;
            proxy_cache off;
        }
        location /repos/static/ {
            alias /usr/share/gitweb/static/;
        }
    }

这样任何 href=" 都将替换为 href="/repos/

这实际上适用于链接和卷曲。但是当我使用 firefox 或 chrome 时,我会得到例如

 <link rel="stylesheet" type="text/css" href="static/gitweb.css"/>

代替curl -o- 'http://localhost/repos/'|grep css

<link rel="stylesheet" type="text/css" href="/repos/static/gitweb.css"/>

。为了规避任何缓存我

  1. 在 Chrome 中打开调试选项卡并启用“禁用缓存”,
  2. 使用 firefox-bin 而不是 chrome。
  3. 手动删除缓存。
  4. 完全重新启动chrome。
  5. 重新启动 nginx 和 fcgiwrap。
  6. 添加了一个新的存储库,内容发生了变化。

没有任何帮助!

我总是在 chrome 和 firefox 中得到错误的 URL,但在链接或curl 中则不然。

相关内容