У мене є Debian, на якому запущено Nginx git.example.com
я використовую для зберігання сховищ git.
Я можу тягнути / натиснути / клонувати через SSH, запустивши git clone keeyan@example.com/git/my_repo
. ( git
є символічною посиланням у моєму домашньому каталозі, на який вказується /mnt/primary_storage/git
)
Однак, коли я клоную / тягну з HTTP (S), я отримую таку помилку:
fatal: http://git.example.com/my_repo.git/info/refs not valid: is this a git repository?
Я отримую цю помилку, незважаючи на те, що я клоную справжній репозиторій
Відповідна частина конфігурації Nginx:
server {
listen 80;
server_name git.example.com;
root /mnt/primary_storage/git;
location ~ (/.*) {
auth_basic "Login";
auth_basic_user_file /mnt/primary_storage/.htpasswd;
include fastcgi_params;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;
fastcgi_param GIT_HTTP_EXPORT_ALL "";
fastcgi_param GIT_PROJECT_ROOT /mnt/primary_storage/git;
fastcgi_param PATH_INFO $1;
fastcgi_pass localhost:9000;
}
}
Дратівлива річ в тому, що у мене була така ж установка, що працює на іншому сервері, який мав Ubuntu, і він працював нормально. Так що я не знаю, що викликає це. Крім цієї однієї проблеми все на сервері працює нормально.
Так, на сайтах StackExchange є кілька подібних питань, але ніхто не допомагає мені. Наприклад, деякі з них мають справу з Github, і вони не створили сховище. Інші мали неправильну адресу Git. А інші сказали, що я повинен бігти git config --global http.proxy
що не допомогло.
Крім того, у мене є потрійна перевірка всіх дозволів на папку / файл, і всі вони читаються і записуються від користувача Nginx.