Hi Jon,

I went through the process of setting up fossil behind NGINX the same
way your looking for, where you can specify the repository depending on
the url. At first I tried the proxy method with xinetd, but had to play
with path's of the actual repositories before it would work.

The solution I went with was to use scgi with configuration similar to
the following:

In /etc/nginx.conf

        location ~ ^/fossil(.*)$ {
            fastcgi_pass    unix:/run/fcgiwrap.sock;
            include         fossil_fcgi_params;
            fastcgi_param   SCRIPT_NAME "/fossil";
        }

In fossil_fcgi_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;
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;
fastcgi_param  REMOTE_USER        $remote_user;

And the cgi script as

#!/usr/bin/fossil
directory: /srv/fossil/
notfound: http://localhost/invalid.html

Where /srv/fossil is where I keep the .fossil files.

Stephen C

On 04/03/14 01:34 PM, Jon wrote:
> New to fossil and am trying to stand up a simple fossil server fronted
> by nginx. I've read the website doco, spelunked the mailing list, and
> have tweaked configurations a bit. All to no avail.
>
> I want to use fossil and nginx to make multiple repos available via
> base url's such as
>
>   http://somewhere.mydomain.com/partner/<repo-name>
>
> in which fossil repos live under root-owned /srv/fossils/partner as
> *.fossil files
>
> With limited nginx configuration tweaking the best I've been able to
> achieve is a fossil repo main page but with invalid links (e.g. -
> http://127.0.0.1:8080/logicalmaps/index) pointing to the fossil server
> running in localhost mode. Via the following I see fossil redirects
> which likely means a more complex nginx config.
>
> $ curl -I http://stimpy/partner/logicalmaps
> HTTP/1.1 302 Moved Temporarily
> Server: nginx
> Date: Tue, 04 Mar 2014 18:03:09 GMT
> Content-Type: text/html; charset=utf-8
> Content-Length: 80
> Connection: keep-alive
> Location: http://stimpy/logicalmaps/index
> X-Frame-Options: SAMEORIGIN
> Cache-control: no-cache
>
> Below are the relevant snippets of my original fossil and nginx config
> that does not work.
>
> Before I spend more time (likely in the wrong direction) I'd
> appreciate your guidance as to the best way to setup fossil + nginx.
> I'd prefer nginx in reverse http proxy mode but SCGI is also fine.
> Once the base config works, I'll move to HTTPS.
>
> Jon
>
>
>
> ==== BASIC FOSSIL and NGINX CONFIGURATION ====
>
> # upstart script - /etc/init/fossil.conf
> description "Fossil DVCS Server"
>
> start on runlevel [2345]
> stop on runlevel [!2345]
> respawn
>
> exec /usr/local/sbin/fossil server --localhost /srv/fossils/partner
>
>
> # main nginx config - /etc/nginx/nginx.conf
> ...
> http {
>     include       /etc/nginx/mime.types;
>     default_type  application/octet-stream;
>     ...
>     include /etc/nginx/conf.d/*.conf;
> }
>
>
> # default nginx config - /etc/nginx/conf.d/default.conf
> server {
>     listen       80 default_server;
>     server_name  stimpy;
>     server_tokens off;
>     ...
>     location / {
>         root   /usr/share/nginx/html;
>         index  index.html index.htm;
>     }
>     ...
>     location /partner/ {
>         proxy_pass http://127.0.0.1:8080/;
>         proxy_connect_timeout 30s;
>         proxy_set_header Host $host;
>         proxy_set_header X-Real-IP $remote_addr;
>         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>     }
>     ...
> }
>
>
> jon@stimpy:~$ ps aux | egrep 'nginx|fossil'
> root      2279  0.0  0.0   2584   372 ?        Ss   Feb26   0:00
> /usr/local/sbin/fossil server --localhost /srv/fossils/partner
> root     16849  0.0  0.2  31208  2652 ?        S    12:56   0:00
> nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
> nginx    16850  0.0  0.1  31564  1656 ?        S    12:56   0:00
> nginx: worker process
>
>
> _______________________________________________
> fossil-users mailing list
> fossil-users@lists.fossil-scm.org
> http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to