Я использую nginx, и моя текущая конфигурация сервера выглядит следующим образом:
сервер {
слушать 443 ssl;
слушать [::]:443 ssl;
имя_сервера git.wozzes.me;
ssl_certificate /etc/letsencrypt/live/wozzes.me/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wozzes.me/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers включен;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
# файлы статического репо для клонирования через https
расположение ~ ^.*\.git/objects/([0-9a-f]+/[0-9a-f]+|pack/pack-[0-9a-f]+.(pack|idx))$ {
корень /var/lib/git/repositories/;
}
# запросы, которые нужно отправить на git-http-backend
location ~ ^.*\.git/(HEAD|info/refs|objects/info/.*|git-(upload|receive)-pack)$ {
корень /var/lib/git/repositories/;
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
fastcgi_param SCRIPT_FILENAME /usr/libexec/git-core/git-http-backend;
fastcgi_param PATH_INFO $uri;
fastcgi_param GIT_PROJECT_ROOT $document_root;
fastcgi_param GIT_HTTP_EXPORT_ALL "";
fastcgi_param REMOTE_USER $remote_user;
включить fastcgi_params;
}
try_files $uri @cgit;
местоположение @cgit {
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
fastcgi_param SCRIPT_FILENAME /usr/share/webapps/cgit/cgit.cgi;
fastcgi_param PATH_INFO $uri;
включить fastcgi_params;
}
}
Эта конфигурация позволяет мне клонировать репозитории без использования пароля, но также позволяет пользователям свободно отправлять данные в мои репозитории, чего я не хочу. Если я добавлю раздел авторизации в git-http-бэкенд
части он также начинает требовать пароль для обычного клонирования.
Как разрешить клонирование без проверки подлинности, но требовать пароль для отправки?