git - 通过 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 和对应的证书。
解决方案
正如@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 {
}
}
}
推荐阅读
- c - CS50 Pset2 可读性中的错误输出
- c++ - 默认构造函数和 void 构造函数有什么不同
- xml - 使用 XSL 交叉引用来计算匹配节点
- flutter - Flutter如何按1个值过滤数据?
- java - 如何识别项目(eclipse)类型(RCP或其他)来查看代码?
- amazon-web-services - 从 KMS 加密 SNS 中的 lambda 函数发布
- javascript - 在一条线上推动和取消移动是行不通的。我究竟做错了什么?
- asp.net - IdentityServer4 - ASP .Net core 2 - 即使使用有效令牌也未经授权
- python-3.x - 重塑数据框切片列
- python - 装饰器:在等待函数后执行操作