nginx 同一個端口同時 支持 http 和 https


遇到一個場景:

開始測試時,使用的是 88 端口,比如 www.abc.com:88

后來上線了切換到 80 端口,www.abc.com,

然后升級到 https 默認使用443端口,https://www.abc.com

但是呢,有部分老用戶還是在使用 88 和 80 端口,這個好解決,就是一個 http 到 https 的 rewrite。

但是呢,有部分用戶會這樣訪問:

https://www.abc.com:88/

協議使用的是 https 協議,但是呢 端口使用的是 88!

這樣就會報錯,導致無法訪問。

解決起來也很簡單,把 80 88 443 三個端口都寫到一個 server 段里面,配置 ssl on,這樣 如果用戶在使用 http 訪問時,就會報497錯誤,

然后用error_page 處理一下:

error_page  497  https://$host$uri;

這樣就是可以實現 http https 協議和 80 88 443 端口的任何組合都會正確的跳轉到 https訪問:

 

 

 

 搞定。

error code 497

497 - normal request was sent to HTTPS

當虛擬站點只允許https訪問時,當用http訪問時nginx會報出497錯誤碼

PS: 其實沒有實現 同一個端口同時支持 http 和 https,只是將 http 跳轉到 https。

同一個端口不可能實現兩種訪問協議。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM