У меня возникла очень странная проблема с gitlab-ce, установленным на сервере с сервером ubuntu (я пробовал это с серверами ubuntu 16.04 и 17.04), который работает в моей локальной сети. Я использую gitlab с apache2 со следующей настройкой:
Мой файл /etc/gitlab/gitlab.rb выглядит следующим образом:
external_url "http://localhost:17391"
Мой файл конфигурации виртуального хоста apache для сайта (назовем его example.com) выглядит так:
<VirtualHost *:80>
ProxyPass / http://localhost:17391
ProxyPassReverse / http://localhost:17391
</VirtualHost>
По сути, я беру весь трафик, который получает apache, и перенаправляю его на nginx. Я могу посмотреть 'http://example.com'в веб-браузере (мне, конечно, нужно получить доступ к сайту через прокси, потому что сервер работает в той же локальной сети, что и мой компьютер), и все работает нормально (вход в систему, просмотр репозиториев и т. д.). Как только я пытаюсь клонировать в репозиторий на моем компьютере, выполнив следующую команду в терминале, я получаю сообщение об ошибке:
$ git clone http://example.com/user/repoName
Cloning into repoName...
fatal: repository 'http://example.com/user/repoName' not found
Но когда я пробую то же самое с локальным IP-адресом сервера (скажем, 192.168.1.100) вместо домена, кажется, что он работает:
$ git clone http://192.168.1.100/user/repoName
Cloning into repoName
Warning: redirecting to http://192.168.1.100/user/repoName.git
remote: counting objects: 3, done
remote: total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done
Поэтому я подумал, что причина, по которой это не работает, может быть в том, что я не могу получить доступ к серверу через домен, когда я нахожусь в той же локальной сети.
Но вот что странно:
Когда я пробую точно такую же настройку, но вместо порта 80, apache прослушивает другой порт, 17392, обе команды успешно клонируются в репо.
Спасибо за любую помощь заранее!
Хотя я не выяснил, что вызывает такое странное поведение, я нашел решение проблемы (на самом деле: я обнаружил, что там вообще не было проблемы).
Я попросил друга попробовать запустить команду
git clone http://example.com/user/repoName
и он работал нормально. Таким образом, кажется, что процесс клонирования в репо на порту 80 отлично работает вне локальной сети сервера, но из той же локальной сети должен использоваться локальный IP-адрес.