web-dev-qa-db-ja.com

HAProxyがトラフィックをNGINXにリダイレクトし、「プレーンHTTPリクエストがHTTPSポートに送信されました」というエラーが発生する

私たちが試みているのは、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構成の何が問題になっているのかわかりません。

2
forestclown

バックエンドサーバーの仕様を次のように変更します。

server server1 backend:3000 weight 1 maxconn 8192 check ssl verify none

「ssl」の部分は、バックエンドがSSLを話すことを定義します。SSLが存在しない場合、haproxyはデフォルトでプレーンHTTPになります。 「verifynone」は証明書のチェックを無効にします。これは、とにかく内部サーバーでは実行したくないことです。

8
Lacek