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

Обратный прокси-сервер Nginx без завершения SSL

Я пытаюсь настроить веб-службы удаленного рабочего стола Microsoft на сервере Windows 2k12. Это полностью функционально, однако я хотел бы (нужно) поставить перед ним обратный прокси (Nginx).

У меня только 1 внешний IP-адрес (фиксированный), и я размещаю за ним несколько веб-сайтов, а не все на одной виртуальной машине. Мне удалось заставить Nginx работать как обратный прокси для HTTP и HTTPS трафика с vhosts. Однако для служб удаленного рабочего стола разгрузка SSL вызывает у меня проблемы при запуске приложения. Поэтому я хотел бы передавать трафик через сервер Nginx без разгрузки SSL, а сервер Windows выполнял все действия SSL. Кажется, что даже без ввода "ssl on;" Nginx помещает сертификат от другого виртуального хоста в раздел сервера RD Web. У меня нет чего-то вроде "дефолт"блокировать где угодно в моей конфигурации.

Вот небольшой набросок того, как выглядит установка:

                                                           -- |server 1 HTTP|
|internet user| -- |Nginx Rev Proxy listening on port 443| -- |windows server|
                                                           -- |server 2 HTTP|

Ниже приведен файл конфигурации, который у меня есть (для RD Web):

server {
        listen 443;
        server_name host.domain.com;

        access_log /var/log/nginx/host.domain.com.access.log;

        location / {
                proxy_set_header        Host $host;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header        X-Forwarded-Proto $scheme;
                proxy_pass              https://172.29.0.249;
        }

}

Я уже пытался заставить сервер Windows принимать простой HTTP, но это снова вызывает проблемы с приложениями удаленного рабочего стола. Я дохожу до входа в систему, и на этом все заканчивается. Я уже упоминал об этом раньше, но когда я перенаправляю порт 443 на моем брандмауэре на сервер Windows, подключения к удаленному рабочему столу работают без проблем, так что, похоже, это не проблема.

Любая помощь здесь будет принята с благодарностью. Я новичок в Nginx и его конфигурации (в прошлом всегда использовал apache).

Сегодня nginx поддерживает передачу ssl через: https://serversforhackers.com/tcp-load-balancing-with-nginx-ssl-pass-thru

Начиная с версии 1.11.5, nginx поддерживает сквозное SSL-проксирование с учетом SNI: http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html

nginx не может пройти через SSL, не прервав его. Используйте haproxy перед nginx, который способен на это (по крайней мере, версия 1.5), чтобы проксировать веб-трафик удаленных рабочих столов на ваш терминальный сервер, а все остальное - на nginx.