在GitLab私服中使用Pages功能

当本地搭建gitlab服务器的时候经常使用的是直接ip访问, 没有域名, 所以无法访问到类似*.gitlab.io的Pages

这里提供一个取巧的解决办法, 因为gitlab仓库下的文件都可以通过/raw访问原始文本文件, 响应返回类型是文本

所以只需要通过Nginx把后缀为html的文件返回类型改为text/html, 图片类型的改为image/png即可直接访问到网页了

gitlab方面无需配置, Nginx加入如下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 8080;
server_name gitlab;
location / {
proxy_pass http://127.0.0.1/;
add_header content-type "text/html; charset=utf-8";
if ($request_uri ~* "/[^/]+/[^/]+/raw/[^/]+/.+\.svg") {
add_header content-type 'image/svg+xml';
}
if ($request_uri ~* "/[^/]+/[^/]+/raw/[^/]+/.+\.png") {
add_header content-type 'image/png';
}
if ($request_uri ~* "/[^/]+/[^/]+/raw/[^/]+/.+\.(jpeg|jpg|icon)") {
add_header content-type 'image/jpeg';
}
}
}

配置之后例如用户LLL有个仓库blog的主分支master上存放着类似hexo搭建的博客文件,
只需要访问http://127.0.0.1:8080/LLL/blog/raw/master/index.html即可进入博客了