首页 > 解决方案 > 通过 https 网关访问本地哑 http git 存储库

问题描述

我在 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 和对应的证书。

标签: gitnginxredirecthttpsproxy

解决方案


正如@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 {
        }
    }

}

推荐阅读