這里,我們試圖搞清楚幾個概念:web服務器、nginx、代理、反向代理和靜態資源。
嘗試獲取服務器上的資源
互聯網其實沒有什么神秘的,簡單來說就是客戶端向服務器請求資源,然后服務器按照要求返回,僅此而已。
如果我現在有一台具有公網ip的centos服務器,假設我知道在該服務器上有如下路徑:/statics,我要如何去獲取上面的資源呢?就像打開網站一樣,我們試着在瀏覽器輸入ip/statics:
不出意外的話,你會看到上面的拒絕連接返回信息,是的,因為這時候服務器識別不了你的訪問指令,也就不知道該干什么。
web服務器
上面我們雖然有了一台物理的機器,但是這台機器目前還無法理解瀏覽器發過來的資源請求,於是就出現了這樣一種軟件,這種軟件被安裝在服務器上,可以監聽特定的端口,並對特定的請求作出相應回應,這種軟件就叫做web服務器。常見的web服務器有nginx、apache等。我們可以試着再次通過瀏覽器訪問安裝了web服務器的服務器:
這時候發現服務器返回了一個html文件,上面說當前目錄不能訪問。雖然仍然訪問不到該地址,但是至少服務器已經能夠知道我們想要干什么,並且給出反應了。
代理和反向代理
現在我們知道了,web服務器就是物理服務器的庫管員,所有來自客戶端的請求都會先經過web服務器,然后web服務器從物理機器上獲取資源后再返回給客戶端,因此客戶端實際上是在跟web服務器打交道,web服務器就是客戶端的代理,代表客戶端去物理機器上取資源。與此同時,web服務器也可以作為物理服務器的反向代理,代理物理服務器響應客戶端的請求。
一個庫管員的自我修養
作為一個庫管員,最重要的,web服務器要知道每種資源的位置,以及,如果這不是一個簡單的拿貨,而是要加工處理一個零件,應該找誰。
因此我們會有這樣一個配置文件,上面寫着所有問題的答案,我們以nginx為例:
藍框中寫着只監聽80端口的請求,其他端口不理他;
黃框中寫着,如果訪問的是根目錄,則去根目錄下找index.php等文件;
紅框中寫着,如果請求的是xx.php文件,則轉給本地的9000端口上的人,並告9000端口上的人,用他那的index.php來找xx.php並按照他們那兒方式來處理;
綠框中寫着,如果請求的是js、css或者其他的靜態資源,則去相應的路徑下尋找,比如,當我們的html文件中寫着<link href="xxx/xxx.css" rel="stylesheet">,那么就去/usr/share/nginx/html/value/application/views/admin/下面的xxx/xxx.css找。
到這里,nginx的靜態資源反向代理如何配置實現已經都闡述清楚了,下面來簡單做個案例實現。
nginx靜態資源反向代理的簡單實現
只需要進入nginx安裝目錄的conf目錄下,修改nginx.conf文件,在一個server{}中添加一個location路由配置即可:
server { listen 80; location /yanggb/ { # 映射的本地資源目錄,alias必須帶最后的斜杠,否則報錯500 alias D:/yanggb/; autoindex on; } }
這樣,所有放在服務的D:/yanggb/下的文件,都可以通過在瀏覽器上輸入ip/yanggb/進行訪問,比如ip/yanggb/test.html。
"把【想做】變成【去做】,比如想提升自己,就先看兩本書,而不是把時間浪費在考慮上。"