You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置GitLab端口转发实现443访问且不冲突Mattermost服务

可行解决方案步骤

第一步:修改GitLab配置,释放80、443端口

编辑/etc/gitlab/gitlab.rb文件,调整以下配置项,让GitLab内置Nginx仅监听本地回环地址的非公用端口:

# 把external_url改成不带端口的GitLab专属HTTPS域名
external_url 'https://gitlab.example.pl'

# 配置内置Nginx仅监听本地127.0.0.1的8081端口,不对外暴露
nginx['listen_addresses'] = ['127.0.0.1']
nginx['listen_port'] = 8081
nginx['listen_https'] = false
nginx['redirect_http_to_https'] = false

# 关闭GitLab自带的证书签发功能,证书统一交给外层反向代理管理
letsencrypt['enable'] = false

修改完成后执行生效命令:

gitlab-ctl reconfigure

执行完成后可通过ss -tulnp | grep 8081确认GitLab内置Nginx已在本地8081端口监听,且80、443端口未被GitLab占用。

第二步:部署独立Nginx作为全局反向代理

安装系统自带的Nginx后,分别创建GitLab和Mattermost的站点配置,通过不同域名区分两个服务的请求:

GitLab站点配置(示例路径/etc/nginx/sites-available/gitlab)

server {
    listen 443 ssl;
    server_name gitlab.example.pl;

    # 替换为你自己的SSL证书路径
    ssl_certificate /path/to/gitlab_ssl.crt;
    ssl_certificate_key /path/to/gitlab_ssl.key;

    # 核心配置:仅允许指定网段访问GitLab
    allow 192.169.0.1/24;
    deny all;

    location / {
        proxy_pass http://127.0.0.1:8081;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
}

# HTTP跳转HTTPS配置
server {
    listen 80;
    server_name gitlab.example.pl;
    return 301 https://$host$request_uri;
}

Mattermost站点配置(示例路径/etc/nginx/sites-available/mattermost)

server {
    listen 443 ssl;
    server_name mattermost.example.pl; # 替换为你实际的Mattermost访问域名

    # 替换为你自己的SSL证书路径
    ssl_certificate /path/to/mattermost_ssl.crt;
    ssl_certificate_key /path/to/mattermost_ssl.key;

    # 无访问限制,允许所有IP访问
    location / {
        # 替换为你Mattermost实际监听的本地地址和端口
        proxy_pass http://127.0.0.1:8065;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
}

server {
    listen 80;
    server_name mattermost.example.pl;
    return 301 https://$host$request_uri;
}

第三步:调整UFW规则并重启服务

# 可选:删除不再需要的2000端口放行规则
ufw delete allow 2000

# 开放80、443端口给所有IP,满足Mattermost的公网访问需求
ufw allow 80/tcp
ufw allow 443/tcp

启用站点配置并重启Nginx:

ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
nginx -t # 校验配置语法是否正确
systemctl restart nginx

效果验证

  • 192.169.0.1/24网段内的用户直接访问https://gitlab.example.pl即可正常使用GitLab,无需输入端口
  • 非指定网段用户访问GitLab域名会返回403禁止访问
  • 所有IP均可正常访问Mattermost服务,不受IP限制影响

内容的提问来源于stack exchange,提问作者tomasz0124k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 03:45:04