這陣子遇到好幾次這麼一種情況。一個域名,一個端口,但是存在不同後綴的文件。
當時首先想到的是端口複用,雖然沒實際用過但是看這個詞就知道功能上應該沒問題。但是想了想,一般的開發或者運維人員技術力並不強,大概率是不會用端口複用的。直到昨天在某群裡有師傅發了一個文章的截圖,圖裡說到了這種情況,並且說可能是用了反代技術。這時候我才恍然大悟。
反代 ==== 反向代理
一般運維大多都會這個東西,屬於比較基礎的一種類 vpn 技術。之前我也只是大概直到這個東西,這次正好借機會學習學習。
首先說下反向代理的概念,先放兩張圖
兩張圖其實已經非常清楚了,要是還不懂的話。用通俗的話來說普通的代理(正向),將用戶變成代理伺服器去訪問資源。反向代理是伺服器把資源拿來給用戶訪問。一個是讓用戶出去,一個是讓資源進來。
那麼說起反向代理就不得不提到 Nginx,一般反代伺服器都是用這個,雖然 Apache 也可以,但是用的人好像並不是很多。
反向代理功能在 Nginx 的配置文件中設置。Nginx/conf/nginx.conf
該文件中的內容基本可以以這個結構理解
http {
server {
}
}
http 即 http 伺服器相關,server 即開啟的服務功能模組。所以我們需要在 server 裡進行設置。
如圖所示。
server 監聽 80 端口
服務識別名稱為綁定的域名
location 即為本地相關設置,後面可跟路徑、正則。在這裡我寫了兩個規則,分別是判斷兩個格式後綴。
所以這個配置的功能就是:當以 www.ttt.com 訪問到該伺服器時,判斷訪問後綴。如果是 html 則反代 888 端口服務,txt 則反代到 889 端口的服務上。(兩個端口是為了區分不同網站,因為我也真沒有兩台伺服器,只好以一台伺服器的兩個端口區分)
location 配置規則
https://juejin.cn/post/6908623305129852942
y4er 師傅說也可能是本地 web 服務 + 一個反代。這種思路大概也能出現這種功能,但我覺得還是保持存疑。因為在配置文件上好像有一些衝突的地方。web 服務應該是直接在 http 一層設置的,反代在 server 層。兩個先不說優先級和覆蓋。location 的規則可是只能在本層生效,上層應該是不行的。
當然,到這裡我就沒再試了,也不敢肯定,只是推測。