當(dāng)前位置:博客首頁>>nginx >> 閱讀正文

在Nginx中將http://zh30.com:443跳轉(zhuǎn)到https://zh30.com:443

作者: 鄭曉 分類: nginx, 建站經(jīng)驗(yàn) 發(fā)布于: 2020-05-22 11:55 瀏覽:7,811 評(píng)論(3)


有小伙伴反應(yīng)我博客半年沒更新了,借此機(jī)會(huì)趕緊水一篇。

另有小伙伴求助于我一個(gè)這樣的問題,說在使用http://協(xié)議外加443端口訪問時(shí),nginx會(huì)報(bào)錯(cuò)提示:

“400 Bad Request The plain HTTP request was sent to HTTPS port”

這個(gè)錯(cuò)誤是指請(qǐng)求錯(cuò)誤,http協(xié)議的請(qǐng)求被發(fā)送到了https的端口。在Nginx中,不能在一個(gè)端口同時(shí)處理http和https請(qǐng)求。按正常瀏覽來說也不可能會(huì)有這種鏈接(請(qǐng)求)的存在。

nginx在使用https的端口的http訪問時(shí),會(huì)產(chǎn)生一個(gè)內(nèi)部報(bào)錯(cuò)碼497,所以在監(jiān)聽443端口的server中,將這個(gè)497錯(cuò)誤跳轉(zhuǎn)出去即可。

使用nginx的error_page指令來捕捉497錯(cuò)誤并重定向如下:

error_page 497 https://$server_name$request_uri;

如果是非標(biāo)準(zhǔn)端口,可能需要在$server_name后追加:$server_port。

error_page 默認(rèn)使用302跳轉(zhuǎn),如果想指定其它狀態(tài)碼,如301,可以在錯(cuò)誤碼后添加 =301,如:

error_page 497 =301 https://$server_name$request_uri;

示例如我的博客:

listen 443 ssl;server_name zh30.com www.yjfs.org.cn;error_page 497 https://$server_name$request_uri;index index.html index.htm index.php;

加上上面這句后,重新reload配置后,瀏覽器訪問http://zh30.com:443時(shí)將直接跳轉(zhuǎn)到https://zh30.com, 不再會(huì)有400 bad request錯(cuò)誤產(chǎn)生了,至此問題解決。

加一個(gè)參考鏈接,顯得專業(yè):

關(guān)于ssl及497錯(cuò)誤碼:http://nginx.org/en/docs/http/ngx_http_ssl_module.html

關(guān)于error_page:http://nginx.org/en/docs/http/ngx_http_core_module.html#error_page

? ? ? ?

本文采用知識(shí)共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時(shí)請(qǐng)注明出處及相應(yīng)鏈接。

本文永久鏈接: http://www.yjfs.org.cn/nginx-http-port-443.html

在Nginx中將http://zh30.com:443跳轉(zhuǎn)到https://zh30.com:443:目前有3 條留言

用戶評(píng)論頭像 a發(fā)表于 2022年01月19日 16:27[回復(fù)]

測試

用戶評(píng)論頭像 Jeyrce發(fā)表于 2021年06月12日 14:11[回復(fù)]

持續(xù)更新不容易,博主可以留個(gè)郵箱么,想深入和你交流下(從畢業(yè)那會(huì)兒仿了一個(gè)你的網(wǎng)站,咱們友鏈已經(jīng)三年啦)

用戶評(píng)論頭像 二十七發(fā)表于 2020年05月22日 12:30[回復(fù)]

漂亮叔

發(fā)表評(píng)論

change vcode