Рейтинг:0

NGINX проходит через реальный IP-адрес TLS?

флаг cn

Мне было интересно, может ли кто-нибудь пролить свет на мою проблему,

В настоящее время я тестирую передачу TLS на мой сервер zimbra, поскольку SSL должен быть на сервере zimbra и на другом сайте WordPress, который также имеет SSL

установка будет это это

ИНТЕРНЕТ -------- NGINX PROXY ------- ZIMBRA и ------ САЙТ WORDPRESS

Я успешно настроил прокси-сервер nginx для передачи TLS, но я проверил журналы, и кажется, что реальный IP-адрес не передается в zimbra или в wordpress

Но не мог понять это, потому что это не позволяло мне отправлять заголовки прокси, потому что я использую проход TLS

     root@bunker:~# cat /etc/nginx/modules-enabled/passtru.conf
       транслировать {

        карта $ ssl_preread_server_name $ имя {

       wordpress.домен.com wordpress;
        почта.домен.com зимбра;
        по умолчанию https_default_backend;
    }

    вверх по течению WordPress {
        сервер 192.168.7.35:443;
    }

    Зимбра вверх по течению {
        сервер 192.168.7.245:443;
    }
log_format базовый '$remote_addr [$time_local]'
             '$протокол $статус $bytes_sent $bytes_received '
             '$session_time "$upstream_addr" '
             '"$upstream_bytes_sent" "$upstream_bytes_received"
              "$upstream_connect_time"';

access_log /var/log/nginx/access.log базовый;
журнал_ошибок /var/log/nginx/error.log;

    сервер {
        слушать 443;
        прокси_пароль $имя;
        proxy_next_upstream включен;
        ssl_preread включен;
    }
}
Рейтинг:1
флаг us

Вы не можете пройти через IP-адрес, когда вы проходите через TLS.

При сквозной передаче TLS соединение TCP завершается на прокси-сервере сквозной передачи TLS. Это означает, что TCP-соединение установлено между клиентом и прокси. Чтобы добраться до целевого сервера, прокси-сервер открывает TCP-соединение с фактическим целевым сервером. В связи с этим исходный IP-адрес является IP-адресом прокси.

С помощью HTTP можно добавить исходный IP-адрес в поле заголовка HTTP. TLS не имеет такого поля. Поэтому единственная информация, доступная для фактического пункта назначения, — это исходный IP-адрес TCP-соединения, который является прокси-сервером.

Некоторые варианты получения IP-адреса:

  1. Удалите сквозной прокси-сервер TLS и используйте отдельный IP-адрес для каждой службы.
  2. Завершите TLS на прокси-сервере и добавьте заголовки HTTP с исходным IP-адресом.
  3. Возможно, вы сможете использовать протокол PROXY между этим экземпляром nginx и вышестоящими серверами. https://docs.nginx.com/nginx/admin-guide/load-balancer/использование прокси-протокола/ есть информация по этому поводу.
killmasta93 avatar
флаг cn
Спасибо за ответ, так что он не будет работать так же, как HAproxy, поскольку я могу получить реальный IP-адрес, используя ту же настройку, для варианта 2, когда вы говорите, что TLS завершается, не уверен, что вы имеете в виду.
флаг us
У меня нет опыта работы с HAProxy, но в статье, на которую я ссылаюсь, объясняется, что HAProxy использует протокол PROXY. То есть вы можете использовать вариант 3. Под прекращением TLS я подразумеваю, что прокси-сервер имеет все сертификаты и ключи для всех доменов, которые он проксирует, а затем создает отдельные соединения HTTP/HTTPS с вышестоящим сервером.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.