私は3つの異なるコンピュータでファイアウォールの背後で仮想サーバーを実行しています(各コンピュータはクラスタではなく異なるドメインを提供しています)。 Let's Encrypt証明書を自動的に更新するには、ドメイン名に基づいて3つの異なるサーバーに要求を送信するプロキシが必要です。
+--------+ +-------------+
| +----->| domain1.com |
| | +-------------+
| | +-------------+
domain1,2,3.com-->443-->| proxy +----->| domain2.com |
| | +-------------+
| | +-------------+
| +----->| domain3.com |
+--------+ +-------------+
プロキシはOpenBSDで中継されます。私はHTTPを使用して一般的なWebサービスを設定するためにこのガイド(まったく同じ状況)に従いました。 https://serverfault.com/questions/856807/openbsd-how-to-use-relayd-and-httpd-for-redirecting-subdomain-requests
しかし、SSLとHTTPSは異なるようです。プロキシとサービスドメインのWebサーバーにSSL証明書をインストールする必要があるようです。
- 誰でもこれに適切な構文を提案できますか?
- 同じシステムにポート80とポート443の両方を提供できますか?ありがとうございます。
答え1
通常、このタイプのフロントエンドでは、フロントエンドに SSL トラフィックをインストールし、暗号化されていない通常の HTTP トラフィックをバックエンドに転送します。
https http Internet --------> relayd reverse proxy -------> internal LAN web server port 443 port 80
たとえば、次のようになりますman relayd
。
次の構成では、ロードバランシングモード(TLSアクセラレーションとレイヤ7ロードバランシング)を使用して、HTTP WebサーバープールにセキュアHTTPS接続を転送するためのリレーを追加します。 HTTPプロトコル定義は、クライアントとサーバーのアドレス情報を含む2つのHTTPヘッダーを追加し、「Keep-Alive」ヘッダー値を設定されたセッションタイムアウトに設定し、ハッシュに「sessid」変数を含めてターゲットホストを計算します。
http プロトコル "https" {
一致ヘッダー設定 "X-Forwarded-For" \
値 "$REMOTE_ADDR"
一致ヘッダー設定 "X-Forwarded-By" \
値 "$SERVER_ADDR:$SERVER_PORT"
ヘッダー設定 "Keep-Alive" 値と一致 "$タイムアウト"一致クエリハッシュ "sessid"
一致ハッシュ "sessid"
ブロックパス"/cgi-bin/index.cgi"値"を渡すコマンド=」tls {TLSv1.0なし、パスワード「HIGH」}
}"tlsaccel"リレー{
www.example.comポート443 TLS
プロトコル"https"でリッスンして
ポート8080モードロードバランシングチェックtcpに転送
}
ssl
または、tlsがある場合は、key
仮想ホストに関連付けられているIPアドレスに基づいてファイルを見つけようとします。 X.509証明書の場合は、秘密鍵と証明書の公開鍵でその証明書を見つけようとしますrelayd
。/etc/ssl/private
/etc/ssl
~からリレーエージェント
"listen on $relayd_addr port $relayd_port ssl" 行などの ssl キーワードがある場合、リレーは暗号化された SSL プロトコルを使用して接続を受け入れます。リレーは/etc/ssl/private/address.keyで秘密鍵を探し、/etc/ssl/address.crtで公開証明書を探します。ここで、addressは受信するリレーの指定されたIPアドレスです。
したがって、ファイル名はリレーがリッスンしているアドレスと同じでなければなりません。私たちの例では、Relayd.confは "relayd_addr = 127.0.0.1"を受け取っているので、ファイル〜しなければならない名前は127.0.0.1.key、127.0.0.1.csr、127.0.0.1.crtです。
ポート80を提供するには、上記の設定にHTTPプロキシとして一般的な構文を追加するだけです。同時に共存できます。