1、return 301
server {
listen 80;
server_name www.baidu.com;
return 301 https://$http_host$request_uri;
access_log off;
}
2、rewitre
server {
listen 80;
server_name www.baidu.com ;
rewrite ^(.*) https://$server_name$1 permanent;
}
3、error_page
原理:
http和https是tcp的上層協(xié)議,當(dāng)nginx服務(wù)器建立tcp連接后,根據(jù)收到的第一份數(shù)據(jù)來(lái)確定客戶端是希望建立tls還是http。nginx會(huì)判斷tcp請(qǐng)求的首寫(xiě)節(jié)內(nèi)容以進(jìn)行區(qū)分,如果是0x80或者0x16就可能是ssl或者tls,然后嘗試https握手。如果端口開(kāi)啟了https,但請(qǐng)求過(guò)來(lái)的并不是,會(huì)拋出一個(gè)http級(jí)別的錯(cuò)誤,這個(gè)錯(cuò)誤的狀態(tài)碼是NGX_HTTP_TO_HTTPS,錯(cuò)誤代碼497,然后在返回response中會(huì)拋出一個(gè)400錯(cuò)誤(因?yàn)?97不是標(biāo)準(zhǔn)狀態(tài)碼,丟給瀏覽器也沒(méi)有用),這時(shí)瀏覽器會(huì)顯示"400 Bad Request,The plain HTTP request was sent to HTTPS port"文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-730578.html
server {
listen 80 ssl;
listen www.baidu.com:80; #此處添加你要該鏈接訪問(wèn)的域名
server_name www.phpmianshi.com ;
error_page 497 https://$host:8080$request_uri; #此句最關(guān)鍵,重新定義端口
#error_page 497 https://$http_host$request_uri; #此句最關(guān)鍵,只是將http改為https,其他不變
}
參考博客:nginx中http轉(zhuǎn)https的幾種方式_運(yùn)維_PHP面試網(wǎng)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-730578.html
到了這里,關(guān)于nginx配置http請(qǐng)求轉(zhuǎn)成https請(qǐng)求的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!