小编pai*_*seq的帖子

Nginx HTTP 授权仅用于 git push

我使用 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 nginx

8
推荐指数
1
解决办法
331
查看次数

Git push 在写入对象时冻结并给出 504 错误

问题

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)

git push nginx git-http-backend

6
推荐指数
1
解决办法
324
查看次数

将路径参数传递给 Google 的 Cloud Function 端点

我正在关注关于在我的 Cloud Function 前面设置Google Cloud 端点(而不是 AWS API Gateway)的Google教程。我正在触发我的 Cloud Function 以触发 AWS lambda 函数,并且我正在尝试从 OpenAPI规范定义的端点传递 a 。path parameter

路径参数是 URL 路径的可变部分。它们通常用于指向集合中的特定资源,例如由 ID 标识的用户。一个 URL 可以有多个路径参数,每个参数都用花括号 { } 表示。

paths:   /users/{id}:
    get:
      parameters:
        - in: path
          name: id   # Note the name is the same as in the path
          required: true
          schema: 
            type: integer
Run Code Online (Sandbox Code Playgroud)

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

5
推荐指数
2
解决办法
1312
查看次数