Come eseguire il lavoro di push git con nginx (auth di base) dietro il proxy inversa nginx (HTTPS)?

Mi piace avere un server git su un computer (backend) senza accesso diretto a Internet. Dovrebbe esserci un'authentication di base. L'accesso dovrebbe essere disponibile tramite un proxy inverso (frontend) su un altro computer, che fa SSL / HTTPS. Entrambi esegue Debian 7 stabile (wheezy + wheezy-backports per nginx e git).

Finora tutto (= git clone ) funziona ma git push :

  • Nginx "Default" Server?
  • Nginx Reverse Proxy: post_action se la cache proxy ha colpito - Possbile?
  • Apache VirtualHost con mod-proxy e SSL
  • Il log di custom Nginx, $ bytes_sent esiste qualcosa come $ bytes_received?
  • Git / LDAP Account / Gitolite
  • Richiesta di errore di entity framework; troppo grande durante il caricamento di file di oltre 128 KB su SSL
  •  $ git push --set-upstream origin master Username for 'https://myfrontend:443': myusername Password for 'https://myusername@myfrontend:443': error: Cannot access URL https://myserver:443/git/gittest.git/, return code 22 fatal: git-http-push failed 

    Il messaggio di errore nel registro nginx backend è:

     2014/04/01 01:00:00 [error] 27000#0: *7 no user/password was provided for basic authentication, client: myfrontend, server: mybackend, request: "PROPFIND /git/gittest.git/ HTTP/1.0", host: "myfrontend" 

    Sembra che l'autore di base funziona per il clone , ma non per la push .

    La configuration nginx del frontend è:

     server { listen 443; server_name myfrontend; resolver 127.0.0.1; charset UTF-8; # root /var/www/; index index.html; # ssl on; ssl_certificate /etc/ssl/certs/myfronted.crt; ssl_certificate_key /etc/ssl/private/myfrontend.key; # ssl_session_timeout 5m; # ssl_protocols SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP; ssl_prefer_server_ciphers on; # location ~ /git(/.*) { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_pass http://mybackend:8081/git$1; proxy_set_header X-Forwarded-Proto https; proxy_set_header REMOTE_USER $remote_user; } } 

    La configuration nginx per il backend è:

     server { listen 8081; server_name mybackend; root /var/www; charset UTF-8; # location ~ /git(/.*) { auth_basic "Restricted"; auth_basic_user_file /var/lib/git/.htpasswd; dav_methods PUT DELETE MKCOL COPY MOVE; dav_ext_methods PROPFIND OPTIONS; create_full_put_path on; # fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; fastcgi_param GIT_HTTP_EXPORT_ALL ""; fastcgi_param GIT_PROJECT_ROOT /var/lib/git; fastcgi_param PATH_INFO $1; fastcgi_param DOCUMENT_ROOT /usr/lib/git-core/; fastcgi_pass unix:/var/run/fcgiwrap.socket; include fastcgi_params; } } 

    Il config git sul server backend è:

     [core] repositoryformatversion = 0 filemode = true bare = true [http] receivepack = true [gitweb] owner = My Name 

    C'è un altro, forse un modo più semplice per servire git sul lato di backend? Forse senza nginx o senza fcgiwrap? Vorrei tuttavia sopravvivere senza Apache …

    Molte grazie in anticipo!

  • Dare a PHP il permesso di fare una richiesta di richiamo di git
  • fatal: http: //myserverip/home/git/example.git/info/refs non trovato: hai eseguito git update-server-info sul server?
  • GPG che verifica i tag git in uno script di distribuzione
  • Implementazione del sito principale / hub del Git: i cambiamenti di documentroot salva bene ma l'authorization è negata per le sottodirectory
  • Yum non installa la versione più recente di Git su Centos6
  • Crittografare il repository di git sul server (sicuro contro il furto di hardware fisico)
  • One Solution collect form web for “Come eseguire il lavoro di push git con nginx (auth di base) dietro il proxy inversa nginx (HTTPS)?”

    Il problema era nella syntax frontend. Ho dovuto cambiare:

     proxy_pass http://mybackend:8081/git$1; 

    al corretto:

     proxy_pass http://mybackend:8081/git$1$is_args$args; 

    o in alternativa:

     proxy_pass http://mybackend:8081$request_uri; 

    Grazie, Will!

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.