我使用 Nginx 托管了一个私有 git 服务器。我希望任何人都可以克隆到我的存储库(未经授权),但如果他们尝试推送提交,则需要授权。
我的Nginx配置如下:
server {
listen 443 ssl;
server_name git.example.com;
ssl_certificate /fullchain.pem;
ssl_certificate_key /privkey.pem;
location ~ ^.*\.git/(HEAD|info/refs|objects/info/.*|git-(upload|recieve)-pack) {
root /usr/share/nginx/git;
# --- incorrect solution ---
# if ($1 = git-upload-pack) {
# auth_basic "Restricted";
# auth_basic_user_file /usr/share/nginx/htpasswd;
# }
client_max_body_size 0;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;
fastcgi_param GIT_HTTP_EXPORT_ALL "";
fastcgi_param GIT_PROJECT_ROOT $realpath_root;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param PATH_INFO $uri;
fastcgi_param unix:/var/fcgiwrap.socket;
}
Run Code Online (Sandbox Code Playgroud)
根据我的理解,一个git push
请求发送git-receive-pack
到我的服务器。我的简单解决方案是$1
使用 if 语句捕获此后缀,但我很快发现这不是 ifs ( ifisevil )的正确用法。
对于我要完成的工作,是否有更合适的解决方案?
Git
通过 HTTPS 为 81 kB 存储库写入对象时挂起(不允许 SSH)。来自 Nginx 的具体错误信息access.log
如下:
POST /Hello-World/.git/git-receive-pack HTTP/1.1" 504 183 "-" "git/2.28.0.windows.1"
Run Code Online (Sandbox Code Playgroud)
我在已挂载的 Debian 映像中托管 Nginx 和 Git 服务器。需要注意的重要事项:我www
的所有网站文件都以只读方式单独安装。我的 Git 根文件夹也在里面www
(即,www/git
)。
sudo mount -o loop,offset=1 raspbian-stretch-lite.img /mnt/
sudo mount --bind www/ /mnt/usr/share/nginx/www/
sudo mount -o bind,remount,ro /mnt/usr/share/nginx/www
Run Code Online (Sandbox Code Playgroud)
我的 Nginx 配置如下:
server {
listen 443 ssl;
server_name git.domain.com;
ssl_certificate fullchain.pem;
ssl_certificate_key privkey.pem;
# fast clone static files
location ~ \.git/objects/(?:[0-9a-f]+/[0-9a-f]+|pack/pack-[0-9a-f]+\.(?:pack|idx))$ {
root /usr/share/nginx/www/git;
limit_except GET HEAD …
Run Code Online (Sandbox Code Playgroud) 我正在关注关于在我的 Cloud Function 前面设置Google Cloud 端点(而不是 AWS API Gateway)的Google教程。我正在触发我的 Cloud Function 以触发 AWS lambda 函数,并且我正在尝试从 OpenAPI规范定义的端点传递 a 。path parameter
路径参数是 URL 路径的可变部分。它们通常用于指向集合中的特定资源,例如由 ID 标识的用户。一个 URL 可以有多个路径参数,每个参数都用花括号 { } 表示。
Run Code Online (Sandbox Code Playgroud)paths: /users/{id}: get: parameters: - in: path name: id # Note the name is the same as in the path required: true schema: type: integer
GET /users/{id}
我的 openapi.yaml
swagger: '2.0'
info:
title: Cloud Endpoints + GCF
description: Sample API on Cloud Endpoints with …
Run Code Online (Sandbox Code Playgroud) google-cloud-endpoints aws-lambda google-cloud-functions openapi