博主關(guān)于結(jié)論性的東西總結(jié)的是對的,但有一個細(xì)節(jié)值得說明:
并不是說proxy_pass https://$http_host$request_uri;這個指令沒有辦法完成https協(xié)議的正向代理
其實,如果你開了access日志你就會發(fā)現(xiàn),當(dāng)你curl --proxy 'ip:82' --location --request GET 'http://baidu.com'的時候,nginx內(nèi)部最終還是幫你調(diào)用了https://baidu.com,但它并不是基于connect實現(xiàn)的調(diào)用,而是通過http協(xié)議進行了轉(zhuǎn)發(fā)
如果你直接curl --proxy 'ip:82' --location --request GET 'https://baidu.com'這樣訪問,那么nginx就會使用connect去完成https協(xié)議的相關(guān)準(zhǔn)備,這時候nginx默認(rèn)是不支持的,需要使用ngx_http_proxy_connect_module模塊模塊,如果未裝的話,則響應(yīng)400
所以,綜上所述,如果想偷懶使用nginx做https協(xié)議的正向代理,那么在訪問目的地址的時候,如果默認(rèn)是一個https的接口,那么你只需要curl http即可,讓nginx使用http協(xié)議去轉(zhuǎn)發(fā)到https上,這個nginx默認(rèn)是支持的
Nginx做代理服務(wù)器代理支持HTTPS請求首先大家應(yīng)該會用到過nginx做http的代理,這種情況網(wǎng)絡(luò)上搜一下大把大把的文章都按照步驟都能做出http的代理。 還有一種不需要安裝模塊時用http做https的代理。舉...