#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;
}
}