Nginx

HAProxy 將流量重定向到 NGINX,出現錯誤“普通 HTTP 請求已發送到 HTTPS 埠”

  • June 25, 2015

我們試圖讓 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)是我們的 HA 代理伺服器,用於偵聽所有傳入的 443 流量後端:3000 是我們的 nginx 伺服器,它設置為偵聽 SSL 連接

我們現在面臨的目前問題是當我們輸入https://example.com時,瀏覽器顯示以下錯誤:

400 Bad Request
The plain HTTP request was sent to HTTPS port
nginx/1.7.5

似乎當 haproxy 將流量轉發到 nginx(後端:3000)時,它會轉換為 http。

我認為“reqadd x-forwarded-proto:\ https”是為了確保它是 https。

不確定我們的 haproxy 配置有什麼問題。

將後端伺服器規範更改為:

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

“ssl”部分定義後端使用 SSL,如果不存在,haproxy 將預設使用純 HTTP。“驗證無”禁用證書檢查,無論如何您可能都不想對內部伺服器執行此操作。

引用自:https://serverfault.com/questions/701580