Назад | Перейти на главную страницу

Как мне использовать Squid для перенаправления входящего запроса на другой хост?

Я пытаюсь интегрировать внутреннюю установку GitLab с входящим веб-перехватчиком Slack, но у меня проблема: машина, на которой GitLab может получить доступ только к другим машинам в той же сети. У меня есть виртуальная машина, которая находится в той же сети и имеет внешний доступ.

Веб-перехватчик Slack - это такой URL-адрес:

https://hooks.slack.com/services/T18QMD0NM/C09PY5XKO/52lDzmkoxL51p9NLRqxQ9Kq2

Но поскольку я не могу использовать это в GitLab, я настроил службу Slack в GitLab, чтобы вместо этого отправлять запросы по следующему URL-адресу:

https://192.168.1.220:3128/services/T18QMD0NM/C09PY5XKO/52lDzmkoxL51p9NLRqxQ9Kq2

192.168.1.220 IP-адрес виртуальной машины и 3128 здесь Squid слушает.

Как использовать Squid для пересылки всех входящих запросов на hooks.slack.com?

P.S: У меня чистая установка Squid, никаких настроек не менял.

Я полагаю, что лучший способ решить вашу проблему - это указать GitLab на использование исходящего http-прокси.

Вы можете сослаться этот ссылка для настройки http-прокси в вашей установке GitLab.

-- Обновить

#!/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