TLS-сертификат для SNIproxy или обратный прокси-сервер с виртуальным хостом с TLS-сертификатом

в настоящее время я использую SNIProxy (это самое простое, что я когда-либо видел для настройки виртуальных хостов ). Однако я могу установить SSL-сертификаты отдельно для каждого виртуального хоста с конфигурацией каждого сервиса (каждый на отдельном порту), что может быстро стать проблемой, а не для сервера в целом, поэтому мне нужно только сертификат для обратного прокси. Итак, есть ли способ сделать это? В качестве альтернативы, есть ли обратный прокси, который поддерживает виртуальные хосты (желательно с подстановочными знаками, чтобы test.*переходил на test.com, test.net, test.orgи т. д. )и установка сертификата TLS для только этот прокси (Я до сих пор не могу понять, как это сделать в NGINX или Caddy; NGINX поддерживает только хосты для каждой папки, а Caddy не поддерживает пользовательские сертификаты, хотя я могу ошибаться).

0
задан 16 November 2021 в 19:40
1 ответ

В итоге я поместил виртуальные хосты в SNIProxy на localhost http и поставил NGINX как к нему интерфейс HTTPS, так что, когда он получает запрос, он перенаправляет его на локальный хост вместе с заголовком хоста.

Для потомков вот мои конфиги:

Для SNIProxy:

user nobody
pidfile /run/sniproxy/sniproxy.pid

error_log {
    syslog deamon
    priority notice
}

listen 127.0.0.1:8000 {
    proto http
}

table {
    whoogle.* 127.0.0.1:2000
    
    adguard.* 127.0.0.1:2001

    bitwarden.* 127.0.0.1:2002
    
    thea.* 127.0.0.1:2003

    files.* 127.0.0.1:2004

    photopea.* 127.0.0.1:2005

    desmos.* 127.0.0.1:2006

    youtube.* 127.0.0.1:2007

}

и nginx.conf

worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        /dev/null;

daemon off;

events {
    worker_connections  1024;
}


http {
    proxy_temp_path ./tmp;
    access_log /dev/null;
    ssl_certificate ./cert.pem;
    ssl_certificate_key ./key.pem;
    proxy_set_header Host $host;
    client_body_temp_path ./tmp;

    server {
            listen       127.0.0.1:443 ssl;
    
            server_name  *.test;
    
            location / {
                proxy_pass http://127.0.0.1:8000;
            }
        }
    
        server {
            listen       192.168.1.67:443 ssl;
            
            server_name  *.tt;
    
            location / {
                proxy_pass http://127.0.0.1:8000;
            }
        }

        server {
                    listen       127.0.0.1:80;
                    
                    server_name  *.test;

                    return 302 https://$host$request_uri;
                }
            
                server {
                    listen       192.168.1.67:80;
                    
                    server_name  *.tt;

                    return 302 https://$host$request_uri;
                }
}
0
ответ дан 17 November 2021 в 12:01

Теги

Похожие вопросы