Ssl
SNIproxy 的 TLS 證書,或帶有 TLS 證書的虛擬主機的反向代理
我目前使用 SNIProxy(這是迄今為止我見過的最簡單的設置虛擬主機)。但是,我只能使用每個服務的配置為每個虛擬主機單獨設置 SSL 證書(每個都在一個單獨的埠上),這很快就會成為一個問題,而不是整個伺服器,所以我只需要一個證書反向代理。那麼,有沒有辦法做到這一點?或者,是否有支持虛擬主機的反向代理(最好使用萬用字元,以便
test.*
轉到test.com
,test.net
,test.org
等)並為該代理設置 TLS 證書(我仍然不知道如何在 NGINX 中做到這一點或 Caddy;NGINX 僅支持每個文件夾的主機,而 Caddy 不支持自定義證書,儘管我可能是錯的)。
我最終做的是將虛擬主機放在 SNIProxy 中的 localhost http 上,並將 NGINX 作為它的 HTTPS 前端,這樣當它收到請求時,它會將其與主機標頭一起傳送到 localhost。
對於後代,這是我的配置:
對於 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; } }