| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- # This file is managed by gitlab-ctl. Manual changes will be
- # erased! To change the contents below, edit /etc/gitlab/gitlab.rb
- # and run `sudo gitlab-ctl reconfigure`.
- ## GitLab
- ## Modified from https://gitlab.com/gitlab-org/gitlab-foss/blob/master/lib/support/nginx/gitlab-ssl & https://gitlab.com/gitlab-org/gitlab-foss/blob/master/lib/support/nginx/gitlab
- ##
- ## 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 ##
- ###################################
- server { ## HTTPS server
- listen *:80;
- server_name docker.gitlab.com;
- server_tokens off; ## Don't show the nginx version number, a security best practice
- ## Increase this if you want to upload large attachments
- ## Or if you want to accept large git objects over http
- client_max_body_size 0;
- ## Real IP Module Config
- ## http://nginx.org/en/docs/http/ngx_http_realip_module.html
- ## HSTS Config
- ## https://www.nginx.com/blog/http-strict-transport-security-hsts-and-nginx/
- add_header Strict-Transport-Security "max-age=63072000";
- # Rails sets a default policy of strict-origin-when-cross-origin, so
- # hide that and just send the one we've configured for nginx
- proxy_hide_header Referrer-Policy;
- add_header Referrer-Policy strict-origin-when-cross-origin;
- ## Individual nginx logs for this GitLab vhost
- access_log /var/log/gitlab/nginx/gitlab_access.log gitlab_access;
- error_log /var/log/gitlab/nginx/gitlab_error.log error;
- if ($http_host = "") {
- set $http_host_with_default "docker.gitlab.com";
- }
- if ($http_host != "") {
- set $http_host_with_default $http_host;
- }
- gzip on;
- gzip_static on;
- gzip_comp_level 2;
- gzip_http_version 1.1;
- gzip_vary on;
- gzip_disable "msie6";
- gzip_min_length 250;
- gzip_proxied no-cache no-store private expired auth;
- gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json;
- ## https://github.com/gitlabhq/gitlabhq/issues/694
- ## Some requests take more than 30 seconds.
- proxy_read_timeout 3600;
- proxy_connect_timeout 300;
- proxy_redirect off;
- proxy_http_version 1.1;
- proxy_set_header Host $http_host_with_default;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection $connection_upgrade;
- proxy_set_header X-Forwarded-Proto http;
- location ~ (/api/v\d/jobs/\d+/artifacts$|/import/gitlab_project$|\.git/git-receive-pack$|\.git/ssh-receive-pack$|\.git/ssh-upload-pack$|\.git/gitlab-lfs/objects|\.git/info/lfs/objects/batch$) {
- proxy_cache off;
- proxy_pass http://gitlab-workhorse;
- proxy_request_buffering off;
- }
- location ~ ^/api/v\d {
- proxy_cache off;
- proxy_pass http://gitlab-workhorse;
- proxy_intercept_errors off;
- }
- location = /-/kubernetes-agent/ {
- proxy_pass http://localhost:8150/;
- proxy_intercept_errors off;
- }
- location /-/kubernetes-agent/k8s-proxy/ {
- proxy_pass http://localhost:8154/;
- proxy_buffering off;
- proxy_intercept_errors off;
- }
- # health checks configuration
- include /var/opt/gitlab/nginx/conf/gitlab-health.conf;
- location / {
- proxy_cache off;
- proxy_pass http://gitlab-workhorse;
- }
- location /assets {
- add_header X-Content-Type-Options nosniff;
- proxy_cache gitlab;
- proxy_pass http://gitlab-workhorse;
- }
- error_page 404 /404.html;
- error_page 500 /500.html;
- error_page 502 /502.html;
- location ~ ^/(404|500|502)(-custom)?\.html$ {
- root /opt/gitlab/embedded/service/gitlab-rails/public;
- internal;
- }
-
- } ## end HTTPS server
|