Nginx
nginx https -> http 重定向使用萬用字元錯誤
我已經在整個網路上搜尋了答案,不幸的是沒有。我希望這裡有一個天才。
上下文:我的 nginx 充當服務多個域的反向代理
問題:當非 ssl 域被強制使用 https 時會出現問題,我試圖強制重定向回 http,但在處理重定向之前會出現 SSL 錯誤
行為:
- 網路瀏覽器在隱身模式下的 Chrome 上顯示錯誤:“這可能不是您要查找的站點!您試圖訪問 xxxx.com$$ client website $$,但實際上您到達了一個將自己標識為 proxydomain.com 的伺服器$$ proxy identity $$。”
- 僅當您點擊“繼續”後,瀏覽器才會執行重寫重定向
目前正在生產但出現錯誤的配置文件:
server { listen 443 ssl; server_name _; ssl_certificate conf.d/proxydomain_com.pem; ssl_certificate_key conf.d/proxydomain_com.key; rewrite ^(.*)$ http://$host$request_uri permanent; }
- 它抱怨該域的 SSL 證書無效(顯然),但如果我取消 ssl_certificate 屬性(錯誤 ssl_error_bad_cert_domain)
- 如果我嘗試取消監聽屬性中的“ssl”,我會得到一個 ssl_error_rx_record_too_long
花了 4 個小時在這 5 上,有什麼想法嗎?
非常感謝你 :)
重定向將在 HTTP 協議中完成。HTTPS 是封裝在 SSL 連接中的 HTTP,因此如果由於證書錯誤而建立 SSL 連接失敗,則永遠不會重定向到 http://。因此,要使其正常工作,您必須使用客戶端接受的證書,例如匹配主機名並由受信任的 CA 頒發。
如果您關閉 ssl,它只會在埠 443 上啟動一個普通的非 ssl http 伺服器,但瀏覽器會嘗試與 SSL 通信,因此您會收到有關 record_too_long 的錯誤。