我正在尝试将内部 GitLab 安装与 Slack 传入 webhook 集成,但遇到了一个问题,即 GitLab 只能访问同一网络中的其他计算机。我有一台位于同一网络中且具有外部访问权限的 VM。
Slack webhook 的 URL 如下:
https://hooks.slack.com/services/T18QMD0NM/C09PY5XKO/52lDzmkoxL51p9NLRqxQ9Kq2
但由于我无法在 GitLab 中使用它,因此我在 GitLab 上配置了 Slack 服务以向以下 URL 发出请求:
https://192.168.1.220:3128/services/T18QMD0NM/C09PY5XKO/52lDzmkoxL51p9NLRqxQ9Kq2
192.168.1.220
是虚拟机的 IP 地址,也是3128
Squid 正在监听的位置。
如何使用 Squid 将所有传入请求转发到hooks.slack.com
?
附言:我有一个干净的 Squid 安装,没有改变任何设置。
答案1
我认为解决问题的最佳方法是指示你的 GitLab 使用出站 http 代理。
您可以参考这链接以在你的 GitLab 安装上配置 http 代理。
- 更新
#!/usr/bin/perl
use strict;
# Turn off buffering to STDOUT
$| = 1;
# Read from STDIN
while (<>) {
my @elems = split; # splits $_ on whitespace by default
# The URL is the first whitespace-separated element.
my $url = $elems[0];
# Handle local IP links and translate them to https://hooks.slack.com
# with the rest of the URL intact (if present) and ignore warnings.
# 192.168.1.220:3128
if ($url =~ m#^https://192\.168\.1\.220(/.*)?#i) {
$url = "https://hooks.slack.com${1}";
print "$url\n";
}
}
在您的 squid.conf 文件中添加以下代码行:
redirect_program /path/to/the/script/above/redirect_program.pl
最后使用以下命令重新加载/重新配置 squid:
/path/to/executable/squid -k reconfigure