ฉันใช้ nginx และการกำหนดค่าเซิร์ฟเวอร์ปัจจุบันของฉันเป็นดังนี้:
เซิร์ฟเวอร์ {
ฟัง 443 ssl;
ฟัง [::]: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;
เปิด ssl_prefer_server_ciphers;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
# ไฟล์ repo แบบคงที่สำหรับการโคลนผ่าน https
ตำแหน่ง ~ ^.*\.git/objects/([0-9a-f]+/[0-9a-f]+|pack/pack-[0-9a-f]+.(pack|idx))$ {
รูท /var/lib/git/repositories/;
}
# คำขอที่ต้องไปที่ git-http-backend
สถานที่ ~ ^.*\.git/(HEAD|info/refs|objects/info/.*|git-(upload|receive)-pack)$ {
รูท /var/lib/git/repositories/;
fastcgi_pass ยูนิกซ์:/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 ยูนิกซ์:/var/run/fcgiwrap/fcgiwrap.sock;
fastcgi_param SCRIPT_FILENAME /usr/share/webapps/cgit/cgit.cgi;
fastcgi_param PATH_INFO $uri;
รวม fastcgi_params;
}
}
การกำหนดค่านี้อนุญาตให้ฉันโคลนที่เก็บโดยไม่ต้องใช้รหัสผ่าน แต่ยังช่วยให้ผู้ใช้สามารถพุชไปยังที่เก็บของฉันได้อย่างอิสระ ซึ่งไม่ใช่สิ่งที่ฉันต้องการ ถ้าฉันเพิ่มส่วนการรับรองความถูกต้องใน git-http-แบ็กเอนด์
ส่วนหนึ่งก็เริ่มต้องใช้รหัสผ่านสำหรับการโคลนปกติ
ฉันจะอนุญาตการโคลนโดยไม่ตรวจสอบสิทธิ์แต่ต้องใช้รหัสผ่านในการพุชได้อย่างไร