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