【问题标题】:Acces to local dumb http git repository via https gateway通过 https 网关访问本地哑 http git 存储库
【发布时间】:2021-08-29 21:23:04
【问题描述】:

我在 http 服务器 A 上有一个哑 git 存储库,该服务器无法从 Internet 访问。我在 DMZ 中有服务器 B,我想成为我的 git 存储库的网关。 git 存储库是只读的,没有来自互联网的推送。

如果我使用http,即允许使用git pull http://serverB/git/project,那么解决方案很简单,我只需要将端口80从B转发到A。

但是如何启用git pull https://serverB/git/project

ServerB 有公共 IP 和对应的证书。

【问题讨论】:

  • 设置一个 https 代理(nginx 是一个常用选项),将来自服务器 B 端口 443 的 https 连接转发到服务器 A 端口 80 上的常规 http。

标签: git nginx redirect https proxy


【解决方案1】:

正如@larsks 所说,nginx 代理是将 https 转发到另一台服务器上的 http 的最简单方法。

这里是完整的解决方案(/etc/nginx/nginx.conf的重要部分):

# Settings for a TLS enabled server.
#
    server {
        listen       443 ssl http2 default_server;
        listen       [::]:443 ssl http2 default_server;
        server_name  this_must_be_set_to_registered_public_FQDN;
        root         /usr/share/nginx/html;

        ssl_certificate "/etc/pki/nginx/your.cert";
        ssl_certificate_key "/etc/pki/nginx/private/your.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers PROFILE=SYSTEM;
        ssl_prefer_server_ciphers on;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location /git/ {
            try_files $uri @gitserver;
        }

        location @gitserver {
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_pass http://your.git.server.com;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

}

【讨论】:

    猜你喜欢
    • 2015-09-16
    • 2013-08-03
    • 2020-03-08
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 2019-11-21
    相关资源
    最近更新 更多