關(guān)于使用nginx反向代理TrueNAS scale 網(wǎng)頁(yè)客戶端(WEBUI)
? ?作為業(yè)余玩家,在家里置辦了一臺(tái)機(jī)房退役的 dell R730,作為自己折騰的 All In?One 服務(wù)器。為了方便管理/訪問家里服務(wù)器,又沒有很專業(yè)的折騰需求,本人使用 nginxWebUI(GitHub地址:https://github.com/cym1102/nginxWebUI) 作為家里各種應(yīng)用、服務(wù)的反向代理工具,為了方便管理,Let's encrypt的免費(fèi)證書也在上面申請(qǐng)即續(xù)期。一般的服務(wù)都好說,通過簡(jiǎn)單的配置都可以成功完成反向代理。但是在對(duì)TrueNAS Scale 的WebUI進(jìn)行反向代理的時(shí)候,卻無法成功訪問。
一開始我填寫的配置是這樣的:

此處是通過DMZ主機(jī)轉(zhuǎn)發(fā)的自定義端口給nginx服務(wù)的443端口,所以監(jiān)聽的是443端口。
????????在瀏覽器輸入`https://域名:非標(biāo)準(zhǔn)端口`,回車后,在正常情況下,Web 服務(wù)會(huì)給瀏覽器返回`https://域名:非標(biāo)準(zhǔn)端口/請(qǐng)求位置`。
例如訪問 `https://域名:6666`,會(huì)被重定向到`https://域名:6666/ui/localpath`。
但是訪問TrueNAS時(shí),重定向后,瀏覽器地址欄內(nèi)訪問地址只剩下?`https://域名/ui/localpath` 這樣的域名+請(qǐng)求位置,而端口號(hào)消失了(此時(shí)其實(shí)是使用了https的默認(rèn)443端口,但是家用寬帶的443端口是被封禁的,于是便無法訪問)。
????????作為一個(gè)業(yè)余玩家,讓我完整學(xué)習(xí)nginx語法和互聯(lián)網(wǎng)協(xié)議是不可能的了,特定問題不會(huì)就用搜索引擎搜,經(jīng)過一番查找,發(fā)現(xiàn) https://blog.csdn.net/u011220828/article/details/118894539 和我的問題相似,可以確認(rèn)是 `proxy_set_header Host` 的這個(gè)參數(shù)設(shè)置有問題。趕緊修改:

重新啟用配置,問題依舊。經(jīng)過一番思考,發(fā)現(xiàn)我的$server_port 的對(duì)應(yīng)參數(shù)應(yīng)該是我的監(jiān)聽端口——443,這樣我勾選 `Host參數(shù)`當(dāng)然沒用了。正確做法應(yīng)該是設(shè)置額外參數(shù):

由于此參數(shù)按道理是每個(gè)服務(wù)都添加是最好的,為了方便以后省點(diǎn)功夫,我使用參數(shù)模板的方式添加:

此處若我的DMZ主機(jī)轉(zhuǎn)發(fā)的是6666端口,即使用?`https://域名:6666`?訪問家里的時(shí)候,則值應(yīng)為 `$host:6666`?。
????????添加完模板后,在反向代理的對(duì)應(yīng)地址內(nèi)編輯,設(shè)置額外參數(shù):

最終添加完的界面是這樣的,不再勾選Host參數(shù):


修改完后不忘按以下圖中順序重新啟動(dòng)nginx配置文件。

再次輸入網(wǎng)址+端口訪問 TrueNAS,終于可以成功訪問了。