Перенаправление трафика через nginx с использованием ss_pread_server_name некорректно отображается

#nginx #redirect #proxy

#nginx #перенаправление #прокси

Вопрос:

У меня есть следующая конфигурация nginx для перенаправления трафика на один из двух прокси. Один из них — charles, работающий локально на порту 8889, а другой — экземпляр mitmproxy docker, работающий на открытом порту 8080. Я сопоставляю трафик с любым прокси-сервером на основе имени сервера, используя карту $ ssl_preread_server_name, как показано ниже. Когда я прокручиваю сервер nginx на порту 9991 с www.google.com однако он корректно проходит через прокси-сервер Charles, когда я пытаюсь выполнить пинг сервера kong, https://kong:8445 он не перенаправляется через mitmproxy. Имя сервера kong, как ни странно, корректно преобразуется в его IP-адрес 172.17.0.4, который затем пытается перенаправить через charles? Кто-нибудь может увидеть, что я здесь делаю не так?

 map $ssl_preread_server_name $upstream {
    hostnames;
    www.google.com charles;
    kong mitmproxy;
    172.17.0.4 mitmproxy;
    default charles;
}
 
 #user  nobody;
worker_processes  1;
#pid        /usr/local/var/log/nginx.pid;


events {
    worker_connections  1024;
}

stream {

    log_format custom_log_format '$remote_addr - [$time_local] ';
                               # '$request_uri $status $body_bytes_sent '
                               # '"$http_referer" "$http_user_agent" "$gzip_ratio"';

    access_log  /usr/local/var/log/nginx/access.log custom_log_format;
    error_log /usr/local/var/log/nginx/error.log;

    upstream mitmproxy {
        server 192.168.0.19:8080;
    }

    upstream charles {
        server 192.168.0.19:8889;
    }

    map $ssl_preread_server_name $upstream {
        hostnames;
        www.google.com charles;
        kong mitmproxy;
        172.17.0.4 mitmproxy;
        default charles;
    }

    server {
        listen 9991;
        listen [::]:9991;
        ssl_preread on;
        proxy_pass $upstream;
    }
}