1、概述
“動(dòng)靜分離”目前是一個(gè)常見(jiàn)并且成熟的開(kāi)發(fā)模式。將靜態(tài)資源比如說(shuō)圖片、音頻、視頻等放在一個(gè)(或多個(gè))獨(dú)立的服務(wù)器中,與部署代碼的服務(wù)器分離。
比如說(shuō)“簡(jiǎn)書”,“簡(jiǎn)書”將用戶所上傳的圖片均保存至域名為https://upload-images.jianshu.io服務(wù)器中。分離包括硬件(物理)上的分離以及軟件上的分離:
物理上:部署在相互獨(dú)立的物理機(jī)器上,每個(gè)機(jī)器上有對(duì)應(yīng)的服務(wù)器軟件。
軟件上:類似于虛擬主機(jī)的概念,只有一個(gè)物理機(jī)器,但可以通過(guò)使用服務(wù)器軟件使得動(dòng)靜兩者分離,比如一個(gè)物理機(jī)器上部署了 Tomcat 與 Apache,其中 Apache 作為靜態(tài)資源服務(wù)器軟件。通過(guò) Nginx 實(shí)現(xiàn)動(dòng)靜分離的常見(jiàn)方案有下面幾種:
1、Nginx 本身就可以作為 Web 服務(wù)器軟件使用,即 Nginx 可以作為靜態(tài)服務(wù)器軟件,所以 Nginx 所部署的主機(jī)就可以成為靜態(tài)資源服務(wù)器。

2、Nginx 通過(guò)“虛擬主機(jī)”或“反向代理”,指向部署了服務(wù)器軟件(比如 Apache、Tomcat、Nginx 等),作為靜態(tài)資源服務(wù)器的主機(jī)。

3、靜態(tài)資源與代碼部署在一起(比如說(shuō)都部署在一個(gè) Tomcat 中),但通過(guò) Nginx 將其嚴(yán)格區(qū)分。

方案1和方案2最為常見(jiàn),因?yàn)檫@樣不管是物理上還是軟件上的分離,是實(shí)現(xiàn)了一種靜態(tài)資源相對(duì)獨(dú)立。方案3的“動(dòng)靜分離”就不算十分明顯。
- 云靜態(tài)資源服務(wù)器有很多。
2、舉例
Nginx 作為服務(wù)器軟件,部署 Nginx 的主機(jī)作為靜態(tài)資源服務(wù)器
1、在 Nginx 目錄下創(chuàng)建目錄
/www/image,用于保存靜態(tài)圖片資源。為了后續(xù)的一些效果,可以上傳一些圖片到這個(gè)目錄下。

- 2、Nginx 配置文件:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location /image {
root www/;
autoindex on; # 開(kāi)啟索引,效果見(jiàn)圖
}
}
}
- 3、啟動(dòng) Nginx 或已啟動(dòng)重新加載配置文件。瀏覽器訪問(wèn)
http://192.168.3.42/image,看到:

3、注意
