「GitLab」- 当前登录网络地址非用户的真实地址(Current sign-in IP) @20210130

问题描述

在 GitLab / Admin Area / Users / <Username> / Current sign-in IP 中,显示的网络地址非当前用户的真实地址。

该笔记将记录:如何设置 GitLab 以使 Current sign-in IP 显示真实的网络地址。

解决方案

请求链路:Client => Nginx => Docker => Nginx within the Gitlab Container

第一步、修改 Nginx 配置

目的:使客户端的真实网络地址可以传递到下游,这通过保存在 X-Forwarded-For 字段实现。

为被 Client 请求的 Nginx 设置 X-Forwarded-For 头部:

location / {
    ....
    proxy_set_header    X-Forwarded-For $realip_remote_addr;
    ....
}

第二步、修改 gitlab.rb 配置

目的:1)使在 GitLab 中的 Nginx 读取到上游传递过来的客户端的真实网络地址,2)并传递给 GitLab 后端服务。

...
# 1)
nginx['real_ip_trusted_addresses'] = ['127.0.0.1','172.16.37.0/24']
nginx['real_ip_header'] = 'X-Forwarded-For'
nginx['real_ip_recursive'] = 'on'
...

...
# 2)
nginx['proxy_set_headers'] = {
  "Host" => "$http_host_with_default",
  "X-Real-IP" => "$remote_addr",
  "X-Forwarded-For" => "$proxy_add_x_forwarded_for",
  "X-Forwarded-Proto" => "https",
  "X-Forwarded-Ssl" => "on",
  "Upgrade" => "$http_upgrade",
  "Connection" => "$connection_upgrade"
}
...

在 gitlab.rb 中,配置 nginx[''] 用于控制在 GitLab 中的 Nginx 的配置:
1)nginx['real_ip_header'],指示从 X-Forwarded-For 中读取客户端真实网络地址;
2)nginx['proxy_set_headers'].X-Forwarded-For,用于向后端传递真实的网络地址;

参考文献

WikiNotes/当前登录网络地址非用户的真实地址(Current sign-in IP)
Bundled nginx and set_real_ip_from? (#1153) · Issues · GitLab.org / omnibus-gitlab · GitLab
Current sign in IP always localhost (#3538) · Issues · GitLab.org / GitLab FOSS · GitLab
Module ngx_http_realip_module
NGINX settings | GitLab

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值