3つのWebサーバー(プロキシと同じマシンで実行)のプロキシを作成しようとしています。 Aは、ホストヘッダーを介して要求を正しいポートにリダイレクトするようにリレーを正常に構成しましたが、要求ホストヘッダーに基づいてカスタム証明書と秘密鍵ファイルを設定できないため、すべてのドメインが/ etc / ssl /に保存されます。 IP_ADDRESS.crt と /etc/ssl/private/IP_ADDRESS.key の鍵と証明書のペア。これを達成する方法についてのアイデアはありますか?
私のもの/etc/realyd.conf
:
domain1="bar.com"
port1="3000"
domain2="foo.com"
port2="8000"
challengeport="3001"
table <challenge> { 127.0.0.1 }
table <table1> { 127.0.0.1 }
table <table2> {127.0.0.1 }
http protocol filter_challenge {
pass request path "/.well-known/acme-challenge/*" forward to <challenge>
tcp { nodelay, sack }
}
http protocol resolve_domains {
pass request quick header "Host" value $domain1 forward to <table1>
pass request quick header "Host" value $domain2 forward to <table2>
tcp { nodelay, sack }
}
relay "http_bar" {
listen on $domain1 port 80
protocol resolve_domains
protocol filter_challenge
forward to <table1> check tcp port $port1
forward to <table2> check tcp port $port2
forward to <challenge> check tcp port $challengeport
}
relay "https_bar" {
listen on $domain1 port 443 tls
protocol resolve_domains
forward to <table1> check tcp port $port1
forward to <table2> check tcp port $port2
}
ベストアンサー1
OpenBSD 6.6以降、RelaydはSNIをサポートしています。 「tls keypair」オプションについては、マニュアルページを確認してください。
必要なドメイン数を処理するためにこのオプションを複数回指定できます。
http protocol "reverse_proxy_tls" {
block
pass request header "Host" value "www1.example.com" forward to <httpd_www1>
pass request header "Host" value "www2.example.com" forward to <httpd_www2>
pass request header "Host" value "www3.example.com" forward to <httpd_www3>
tls { no tlsv1.0, ciphers "HIGH" }
tls keypair "www1.example.com"
tls keypair "www2.example.com"
tls keypair "www3.example.com"
}
relay "https" {
listen on $external_ip port 443 tls
protocol "reverse_proxy_tls"
forward to <httpd_www1> port 8080
forward to <httpd_www2> port 8080
forward to <httpd_www3> port 8080
}