У меня есть парк крайних компьютеров Ubuntu, на которых размещены простые веб-серверы HMI. Многие используют динамические IP-адреса, где переадресация портов недоступна.
Таким образом, для доступа к ним каждый использует autossh для создания обратного туннеля на центральный облачный прокси-сервер. Затем я могу получить доступ к каждому из них с помощью https://proxy.mydomain.com:6001, 6002 и т.д. Это работает.
Теперь я хочу использовать NGINX, чтобы нам не приходилось запоминать номера портов. Таким образом, у каждого объекта будет свой собственный поддомен: https://site1.mydomain.com, site2 и т. д. Все поддомены будут указывать на мой прокси-сервер. Затем NGINX должен просмотреть поддомен и проксировать https-трафик на соответствующий порт обратного туннеля.
Конфигурация NGINX показана ниже.
На данный момент моя проблема заключается в том, что NGINX хочет, чтобы я определил сертификат SSL. Однако я хотел бы использовать сертификаты, уже установленные на каждом из пограничных компьютеров.
Итак, как мне передать эти сертификаты клиенту через прокси-сервер NGINX?
Если это невозможно - как лучше всего определить один или отдельные сертификаты на прокси-сервере, которые можно использовать для всех поддоменов?
сервер {
слушать 443 ssl;
имя_сервера site1.mydomain.com;
место расположения / {
proxy_set_header Хост $host;
прокси_пароль https://127.0.0.1:6001;
proxy_ssl_server_name включено;
прокси_перенаправление выключено;
}
}
сервер {
слушать 443 ssl;
имя_сервера site2.mydomain.com;
место расположения / {
proxy_set_header Хост $host;
прокси_пароль https://127.0.0.1:6002;
proxy_ssl_server_name включено;
прокси_перенаправление выключено;
}
}
ОБНОВИТЬ
Для тех, кому интересно, я смог использовать проект «SNIProxy» вместо NGINX и решил эту проблему. Сертификаты HTTPS прошли без проблем.