私たちが試みているのは、HAProxyがポート443(HTTPSおよびWSS)からのすべての着信トラフィックをリッスンするようにすることです。
以下は、HAProxyの構成です。
frontend wwws
bind 0.0.0.0:443 ssl crt /etc/haproxy/server.pem
timeout client 1h
default_backend www_backend
backend www_backend
mode http
stats enable
stats uri /haproxy
option forwardfor
reqadd x-forwarded-proto:\ https
server server1 backend:3000 weight 1 maxconn 8192 check
0.0.0.0:443(例: https://example.com )はすべての着信443トラフィックをリッスンするHAプロキシサーバーですバックエンド:3000はSSL接続をリッスンするように設定されたnginxサーバーです
現在直面している問題は、 https://example.com と入力すると、ブラウザに次のエラーが表示されることです。
400 Bad Request
The plain HTTP request was sent to HTTPS port
nginx/1.7.5
Haproxyがトラフィックをnginx(backend:3000)に転送すると、httpに変換されるようです。
「reqaddx-forwarded-proto:\ https」は、httpsであることを確認するためのものだと思いました。
Haproxy構成の何が問題になっているのかわかりません。
バックエンドサーバーの仕様を次のように変更します。
server server1 backend:3000 weight 1 maxconn 8192 check ssl verify none
「ssl」の部分は、バックエンドがSSLを話すことを定義します。SSLが存在しない場合、haproxyはデフォルトでプレーンHTTPになります。 「verifynone」は証明書のチェックを無効にします。これは、とにかく内部サーバーでは実行したくないことです。