Tôi đang sử dụng nginx và cấu hình máy chủ hiện tại của tôi như sau:
người phục vụ {
nghe 443 ssl;
nghe [::]:443 ssl;
server_name 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;
bật ssl_prefer_server_ciphers;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
# tệp repo tĩnh để sao chép qua https
vị trí ~ ^.*\.git/objects/([0-9a-f]+/[0-9a-f]+|pack/pack-[0-9a-f]+.(pack|idx))$ {
gốc /var/lib/git/kho/;
}
# yêu cầu cần chuyển đến git-http-backend
vị trí ~ ^.*\.git/(HEAD|info/refs|objects/info/.*|git-(upload|receive)-pack)$ {
gốc /var/lib/git/kho/;
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;
bao gồm fastcgi_params;
}
try_files $uri @cgit;
địa điểm @cgit {
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
fastcgi_param SCRIPT_FILENAME /usr/share/webapps/cgit/cgit.cgi;
fastcgi_param PATH_INFO $uri;
bao gồm fastcgi_params;
}
}
Cấu hình này cho phép tôi sao chép các kho lưu trữ mà không cần sử dụng mật khẩu, nhưng nó cũng cho phép người dùng tự do đẩy vào kho lưu trữ của tôi, đây không phải là điều tôi muốn. Nếu tôi thêm phần xác thực vào git-http-phụ trợ
một phần nó cũng bắt đầu yêu cầu mật khẩu để sao chép thông thường.
Làm cách nào để tôi cho phép sao chép không được xác thực nhưng yêu cầu mật khẩu để đẩy?