Chrooted nginx、fastcgi 和 cgit

Chrooted nginx、fastcgi 和 cgit

我正在运行 Debian 服务器,其中 nginx chrooted 在 /var/chroot/nginx 中。它运行良好,但我希望能够运行 cgit 并托管我的 gitolite 存储库。

当它脱离 chroot 时,它会给我和现在一样的错误,即:

2012/12/08 14:25:19 [error] 9179#0: *3 FastCGI sent in stderr: "Cannot get script name, is DOCUMENT_ROOT and SCRIPT_NAME set and is the script executable?" while reading response header from upstream

我确信这是 fastcgi 的问题...下面是我的 nginx.conf 中的相关行:

server {
    listen 80;
    server_name git.url.tld;
    access_log /var/log/nginx/cgit.access.log;
    error_log /var/log/nginx/cgit.error.log;
    root /var/www/htdocs/cgit;

        location ~* ^.+\.(css|png|ico)$ {
            root /var/www/htdocs/cgit;
            expires 30d;
        }

        location / {
    root /var/www/htdocs/cgit;
            fastcgi_param   SCRIPT_NAME     cgit.cgi;
    fastcgi_param   DOCUMENT_ROOT   /var/www/htdocs/cgit;
            fastcgi_param   PATH_INFO       $uri;
            fastcgi_param   QUERY_STRING    $args;
            fastcgi_pass    unix:/tmp/cgi.sock;
        }  
    }

有什么线索吗?Fastcgi、fcgi-wrap 等都在 chroot 之外,因为在 chroot 中拥有 cgit、fastcgi 和 gitolite 似乎有点多余。fastcgi 在 /var/chroot/nginx/tmp/cgi.sock 处打开了一个套接字。

感谢您的帮助!!

答案1

这可能是 debian squeeze (1.0-1+squeeze1) 版本中的 fcgiwrap 的一个错误。请参阅http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698071

升级到 fcgiwrap 1.0.3-3 解决了我的问题。

相关内容