Я хочу получить доступ к удаленной базе данных PostgreSQL через SSL.
Сервер базы данных не имеет собственного сертификата.
У нас есть два разных сервера, на которых работают версии одного и того же веб-приложения.
Первый (назовем его Fizz
) имеет сертификат SSL, запускает nginx, а веб-приложение доступно (только) через HTTPS.
Второй (Buzz
) не имеет сертификата SSL.
Чтобы обеспечить какое-то безопасное соединение, веб-приложение доступно только через Fizz
SSL-соединение.
Чтобы это работало Fizz
nginx настроен на прокси Buzz
веб-приложение через собственное SSL-соединение.
HTTP (S) соединения с других машин отклоняются Buzz
.
Это означает https: // fizz / A показывает Fizz
веб-приложение и https: // fizz / B показывает Buzz
с.
Это прекрасно работает.
Но теперь нам нужен безопасный доступ к базе данных (postgres), запущенной на Buzz
.
Поскольку у нас работает брандмауэр компании, я не могу получить к нему доступ напрямую, но он работает через туннелирование SSH.
Если мне нужен доступ через SSL, я должен получить к нему доступ через Fizz
. И я не знаю как. Я надеялся, что смогу настроить nginx на то, что он делает с веб-приложениями.
Это вообще возможно? Я не знаю, как это настроить. Вся информация, которую я нахожу в сети, относится к http и веб-серверу.
Или есть другой способ, возможно, туннель SSH / SSL для Fizz
и перенаправить трафик на Buzz
?
Я немного заблудился.
Я сделал картинку, чтобы прояснить ситуацию (надеюсь): Зеленый путь - это то, что работает. Я могу получить доступ Fizz
через https и nginx устанавливает соединение с Buzz
который доставляет webapp.
Оранжевый путь - это то, что я хотел бы сделать. В принципе то же самое, но не с сайтом, а с подключением к базе данных.
И я не уверен, возможно ли это с nginx.
Основываясь на ссылке Tims, я теперь настроил это:
Туннель SSH для обхода прокси:
5443:localhost:5443
а также правило nginx:
stream {
listen 5443 ssl;
proxy_pass buzz:5432
}
Идея:
порт, который прослушивает база данных.
Проверка связи с ncat
возвращается Close: Result too large
Так что я не уверен, пока не сработает соединение.