nginx靜態資源反向代理


這里,我們試圖搞清楚幾個概念: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。

 

"把【想做】變成【去做】,比如想提升自己,就先看兩本書,而不是把時間浪費在考慮上。"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM