Hi all, I'm trying to set up Hg behind nginx (web view, clone, pull, push) following the official wiki: http://mercurial.selenic.com/wiki/HgServeNginx. I have created an empty repository ($ hg init t1), set up the following file (hgweb): [web] allow_push = * push_ssl = false baseurl = http://localhost/hg/ [paths] / = /tmp/hg/* And the following nginx.conf: user nginx; worker_processes 1; error_log /var/log/nginx/error.log; pid /run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log main; error_log /var/log/nginx/error.log error; sendfile on; keepalive_timeout 65; include /etc/nginx/conf.d/*.conf; server { listen 80; server_name localhost; location ~ ^/hg/(.*)$ { proxy_pass http://127.0.0.1:8000/$1; } } I launch $ hg serve --web-conf hgweb. The web view works well, but $ hg clone http://localhost/hg/t1 fails. It prints abort: 'http://localhost/hg/t1/' does not appear to be an hg repository: ---%<--- (text/html; charset=UTF-8) **html output** ---%<--- ! instead of $ hg clone http://localhost:8000/t1 works. Requests are different: - With nginx: 127.0.0.1 - - [27/Nov/2012 16:21:08] "GET /t1/ HTTP/1.0" 200 - 127.0.0.1 - - [27/Nov/2012 16:21:08] "GET /t1/ HTTP/1.0" 200 - 127.0.0.1 - - [27/Nov/2012 16:21:08] "GET /t1/ HTTP/1.0" 200 - 127.0.0.1 - - [27/Nov/2012 16:21:08] "GET /t1/.hg/requires HTTP/1.0" 404 - 127.0.0.1 - - [27/Nov/2012 16:21:08] "GET /t1/.hg/00changelog.i HTTP/1.0" 404 - - Without nginx: 127.0.0.1 - - [27/Nov/2012 16:21:32] "GET /t1/?cmd=capabilities HTTP/1.1" 200 - 127.0.0.1 - - [27/Nov/2012 16:21:32] "GET /t1/?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D 127.0.0.1 - - [27/Nov/2012 16:21:32] "GET /t1/?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases 127.0.0.1 - - [27/Nov/2012 16:21:32] "GET /t1/?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks is there some of you who have had the same issue? How did you solve the problem? Have you got ideas on how to solve it? For your help, Thanks by advance.
on 2012-11-27 17:10
on 2012-11-27 17:24
Hello! On Tue, Nov 27, 2012 at 05:10:02PM +0100, Gautier DI FOLCO wrote: > baseurl = http://localhost/hg/ > worker_connections 1024; > listen 80; > server_name localhost; > location ~ ^/hg/(.*)$ { > proxy_pass http://127.0.0.1:8000/$1; > } [...] > is there some of you who have had the same issue? How did you solve the > problem? > Have you got ideas on how to solve it? You essentially asked nginx to drop request arguments here due to proxy_pass with variables being handled specially by nginx. Use this instead: location /hg/ { proxy_pass http://127.0.0.1:8080/; } More details can be found here: http://nginx.org/r/proxy_pass http://nginx.org/r/location -- Maxim Dounin http://nginx.com/support.html
on 2012-11-27 17:29
2012/11/27 Maxim Dounin <mdounin@mdounin.ru> > http://nginx.org/r/proxy_pass > http://nginx.org/r/location > > It works! So fast, thank you very much.
on 2012-11-28 10:44
2012/11/27 Volodymyr Kostyrko <c.kworr@gmail.com> > > baseurl = http://hostname/hg/ > > [paths] > / = /where/is/hg/* > Thanks for your answer. I didn't try this way because I didn't know it. Thank you for this hint.
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.