Nginx

nginx https -> http 重定向使用萬用字元錯誤

  • October 15, 2015

我已經在整個網路上搜尋了答案,不幸的是沒有。我希望這裡有一個天才。

上下文:我的 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;
}

嘗試的解決方案: https ://stackoverflow.com/questions/3893839/how-do-i-redirect-https-requests-to-http-in-nginx/3915822#3915822

  • 它抱怨該域的 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 的錯誤。

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