Назад | Перейти на главную страницу

Конфигурация Nginx, чтобы разрешить клонирование git через http

Справочная информация о моем сервере: у меня все помещено в контейнер докеров. Есть докер-сеть. Все докеры находятся в одной сети. И я использую псевдонимы для адресации моего контейнера. Мои псевдонимы контейнеров для gitlab: gitlab.docker. Интересным контейнером для этого вопроса является мой gitlab_runner контейнер, мой gitlab контейнер и мой nginx контейнер.

Я заметил свой gitlab-runner контейнер выдает ошибку 18, когда предполагалось клонировать проект.

Я почти уверен, что это nginx вопрос. Я знаю это, потому что я вошел в контейнер в той же сети докеров и однажды попытался клонировать через мой общедоступный адрес DNS, а один раз через внутреннюю сеть, обогнув мой собственный nginx, в результате (заменил мой домен и домен верхнего уровня. Остальное нетронутый):

bash-5.0# git clone "http://gitlab.myHost.com/docker/sbt.git"
Cloning into 'sbt'...
Username for 'https://gitlab.myHost.com': root
Password for 'https://root@gitlab.myHost.com': 
warning: redirecting to https://gitlab.myHost.com/docker/sbt.git/
remote: Enumerating objects: 16, done.
remote: Counting objects: 100% (16/16), done.
remote: Compressing objects: 100% (12/12), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: unpack-objects failed

bash-5.0# git clone "http://gitlab.docker/docker/sbt.git"
Cloning into 'sbt'...
Username for 'http://gitlab.docker': root
Password for 'http://root@gitlab.docker': 
remote: Enumerating objects: 16, done.
remote: Counting objects: 100% (16/16), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 16 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (16/16), done.

Это моя конфигурация nginx:

server {
  server_name gitlab.myHost.com;

  listen 80;
  listen 443 ssl;

  ssl_certificate /etc/letsencrypt/live/gitlab.myHost.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/gitlab.myHost.com/privkey.pem;

  include /etc/letsencrypt/options-ssl-nginx.conf; 

  if ($scheme != "https") {
      return 301 https://$host$request_uri;
  } 

  location / {
    proxy_pass http://gitlab.docker;
  }
}

Кто-нибудь знает, почему это не работает? Я должен отметить, что сайт gitlab работает нормально. За исключением веб-среды IDE, которая не загружается. На всякий случай, это связано, но на самом деле это проблема, которая очень далеко в моей задаче.

Хорошо, я разобрался. В моем репо был двоичный файл размером 55 МБ, который был слишком большим. Добавление этого в мою конфигурацию решило это:

client_max_body_size 4G;

Вопрос в том, неужели 4 ГБ слишком велики для этого. Но поскольку это только для Gitlab, я думаю, что на данный момент это нормально.