92 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| ## GitLab
 | |
| ## Maintainer: @randx
 | |
| ##
 | |
| ## Lines starting with two hashes (##) are comments with information.
 | |
| ## Lines starting with one hash (#) are configuration parameters that can be uncommented.
 | |
| ##
 | |
| ##################################
 | |
| ##        CHUNKED TRANSFER      ##
 | |
| ##################################
 | |
| ##
 | |
| ## It is a known issue that Git-over-HTTP requires chunked transfer encoding [0]
 | |
| ## which is not supported by Nginx < 1.3.9 [1]. As a result, pushing a large object
 | |
| ## with Git (i.e. a single large file) can lead to a 411 error. In theory you can get
 | |
| ## around this by tweaking this configuration file and either:
 | |
| ## - installing an old version of Nginx with the chunkin module [2] compiled in, or
 | |
| ## - using a newer version of Nginx.
 | |
| ##
 | |
| ## At the time of writing we do not know if either of these theoretical solutions works. 
 | |
| ## As a workaround users can use Git over SSH to push large files.
 | |
| ##
 | |
| ## [0] https://git.kernel.org/cgit/git/git.git/tree/Documentation/technical/http-protocol.txt#n99
 | |
| ## [1] https://github.com/agentzh/chunkin-nginx-module#status
 | |
| ## [2] https://github.com/agentzh/chunkin-nginx-module
 | |
| ##
 | |
| ###################################
 | |
| ##         configuration         ##
 | |
| ###################################
 | |
| ##
 | |
| 
 | |
| upstream gitlab {
 | |
|   server unix:/home/git/gitlab/tmp/sockets/gitlab.socket fail_timeout=0;
 | |
| }
 | |
| 
 | |
| ## Normal HTTP host
 | |
| server {
 | |
|   listen 0.0.0.0:80 default_server;
 | |
|   listen [::]:80 default_server;
 | |
|   server_name YOUR_SERVER_FQDN; ## Replace this with something like gitlab.example.com
 | |
|   server_tokens off; ## Don't show the nginx version number, a security best practice
 | |
|   root /home/git/gitlab/public;
 | |
| 
 | |
|   ## Increase this if you want to upload large attachments
 | |
|   ## Or if you want to accept large git objects over http
 | |
|   client_max_body_size 20m;
 | |
| 
 | |
|   ## Individual nginx logs for this GitLab vhost
 | |
|   access_log  /var/log/nginx/gitlab_access.log;
 | |
|   error_log   /var/log/nginx/gitlab_error.log;
 | |
| 
 | |
|   location / {
 | |
|     ## Serve static files from defined root folder.
 | |
|     ## @gitlab is a named location for the upstream fallback, see below.
 | |
|     try_files $uri $uri/index.html $uri.html @gitlab;
 | |
|   }
 | |
| 
 | |
|   ## If a file, which is not found in the root folder is requested,
 | |
|   ## then the proxy passes the request to the upsteam (gitlab unicorn).
 | |
|   location @gitlab {
 | |
|     ## If you use HTTPS make sure you disable gzip compression
 | |
|     ## to be safe against BREACH attack.
 | |
|     # gzip off;
 | |
| 
 | |
|     ## https://github.com/gitlabhq/gitlabhq/issues/694
 | |
|     ## Some requests take more than 30 seconds.
 | |
|     proxy_read_timeout      300;
 | |
|     proxy_connect_timeout   300;
 | |
|     proxy_redirect          off;
 | |
| 
 | |
|     proxy_set_header    Host                $http_host;
 | |
|     proxy_set_header    X-Real-IP           $remote_addr;
 | |
|     proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
 | |
|     proxy_set_header    X-Forwarded-Proto   $scheme;
 | |
|     proxy_set_header    X-Frame-Options     SAMEORIGIN;
 | |
| 
 | |
|     proxy_pass http://gitlab;
 | |
|   }
 | |
| 
 | |
|   ## Enable gzip compression as per rails guide:
 | |
|   ## http://guides.rubyonrails.org/asset_pipeline.html#gzip-compression
 | |
|   ## WARNING: If you are using relative urls remove the block below
 | |
|   ## See config/application.rb under "Relative url support" for the list of
 | |
|   ## other files that need to be changed for relative url support
 | |
|   location ~ ^/(assets)/ {
 | |
|     root /home/git/gitlab/public;
 | |
|     gzip_static on; # to serve pre-gzipped version
 | |
|     expires max;
 | |
|     add_header Cache-Control public;
 | |
|   }
 | |
| 
 | |
|   error_page 502 /502.html;
 | |
| }
 |