gitweb and nginx on Debian

I have been using NGINX for a while and really like it. You run into special cases depending on when you are trying to run any CGI stuff. I wanted to quickly document how to get it running on a Debian system. I will assume you are using /var/www as your web root and you have Debian. It all starts with apt-get install gitweb fcgiwrap then you need to symlink your new install like this: ln -s /usr/share/gitweb /var/www/.

You now need to tell nginx what to do and how, edit your default file (or wherever you set your vhosts) then add this:

       location /gitweb/ {
		index index.cgi;
		include fastcgi_params;
                gzip off;

               if ($uri ~ "/gitweb/index.cgi") {
                        fastcgi_pass unix:/var/run/fcgiwrap.socket;


My fastcgi_params file is a bit different from the defaults, so I am adding this here, edit /etc/nginx/fastcgi_params

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

Just do a service nginx restart and point your browser to /gitweb, all set!