[希望] 希望 gogs 像 GitBucket 一样支持多 URL 访问。


#1

Gogs 一般都是家用或者公司内部服务器架设,他们都是非公网服务器的,一般都有一个内网地址和一个外网IP。比如我家的服务器地址是 192.168.1.11,外网动态域名是 xxxx.ddns.net,路由上做了内外端口转发。

Gogs 需要我把 ROOT_URL 写死,比如写死成 https://192.168.1.11,那么不管在内网还是外网访问,克隆地址都是:这个内网地址

GitBucket 就很灵活,我从 192.168.1.11 访问时,它显示克隆地址是内网的
当我从外网地址访问时,克隆地址就会自动变成,外网的地址。

我在想如果 gogs 能跟 GitBucket 一样,假设我把 ROOT_URL 填 “空” 的话,那么根据我请求的 HTTP 头,自动计算出 ROOT_URL 来,这样我在家或者在公司,不管通过内网访问或者外网访问,都会比较方便。

这是我觉得 GitBucket 唯一比 gogs 强的地方了。

Gogs 和 GitBucket 一样都是用来自架服务器的,家用服务器和公司内网服务器是比较常见的需求,而同时通过内网 url 和公网 url 访问同一台 gogs 服务器也应该是一个挺常见的需求吧?希望能支持一下。


#2


这是使用 GitBucket 从外网访问的效果,克隆地址自动识别出来请求来自外网。GitBucket 是放在内网服务器的 docker 容器的,我通过外网的端口映射访问,GitBucket 应该是根据 http 请求头识别出 ROOT_URL 来的。

不知道 gogs 能否支持一下,当 ROOT_URL 为空字符串时,自动识别来源,这是我唯一没有卸载 GitBucket 的原因了。


#3

这个提议可以有啊,建议github提交一个正式的feature request


#4

已发:https://github.com/gogs/gogs/issues/5518

期待更新啊。


#5

我今天又读了一遍 gogs 配置文档,可能单独一个配置更好一点,如果该配置打开,那么在项目主页的克隆地址那里显示一个根据 HTTP header 计算的地址给我就行了。

因为 ROOT_URL 看起来必须有,还不能置空,比如 hook 那里,gogs 会提供项目的 url ,这时没人访问,这里应该是根据 ROOT_URL 计算出来的吧,那么如果我需要处理这些 hook 的调用,我肯定会把处理程序部署再同一个内网里面,也就是说我需要把 ROOT_URL 写成内网地址。

如果这里填写空字符串,那可能有些地方就不对了。


#6

嗯,这个配置可以作为默认值,如果是web访问,可以支持自适应