解決nginx同端口強制跳轉https配置ssl證書問題


如果正常的,80 端口 HTTP 跳轉 HTTPS,那么直接在 server listen 80 下寫 return 301 https://$host$request_uri; 就行

但是,現在的情況是,80/443 都有服務了,然后在 8088 端口上開了一個需要客戶端證書認證的 TLS 雙向認證服務,通過 https://www.jonnyan404.top:8088 可以成功訪問,瀏覽器會提示選擇客戶端證書,這都沒問題。

但是在首次訪問的時候,如果沒有顯式指定 https 協議,將會自動默認使用 http 協議來訪問 8443 端口,導致 nginx 報錯:400 Bad Request: The plain HTTP request was sent to HTTPS port。

正確配置如下:

497狀態碼是專門為解決非標准ssl端口跳轉問題.

server {
listen 8443 ssl http2;
server_name xxxxx.com;

error_page 497 301 =307 https://$host:$server_port$request_uri;

ssl_verify_client on;

............

致謝


免責聲明!

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



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