如何使用 Squid 将传入请求重定向到另一台主机?

如何使用 Squid 将传入请求重定向到另一台主机?

我正在尝试将内部 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 地址,也是3128Squid 正在监听的位置。

如何使用 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

相关内容