Nginx動靜分離

訪問個人博客css

前言

最新公司新開了一個項目,項目由我來配置基礎環境,會寫一系列的教程來展現,一個網站從零到上線的整個過程。首先本文介紹資源文件的隔離。html

爲何要實現動靜分離

爲何要將靜態資源文件與動態請求進行分離? 爲了下降 Tomcat 服務器的負載,能夠經過本文設置並結合 CDN 來實現來更完全地下降服務器的負載。java

mark

如圖所示,全部的請求都壓到了同一臺服務器上, 不管靜態仍是動態的請求,這樣流量大的話勢必會形成服務器的負載太高,由於動靜分離是必不可少的。nginx

環境介紹

首先這是咱們項目的目錄結構, resource 目錄和 **_res** 目錄中都是靜態資源文件,存放好比 js/css/img 等資源。這兩個目錄下的文件有所不一樣,**_res** 目錄下面是壓縮版本的,好比壓縮的js/css。經過 Git 或者 SVN 將項目上傳到服務器上後,配置 Nginx 來完成靜態資源的分離。vim

mark

首先看一張圖(圖的來源是:http://www.cnblogs.com/xiaoblog/p/4241086.html)api

mark

當請求通過 Nginx 時,若是是靜態資源的請求,就直接返回主機上靜態資源便可, 若是是動態請求,則去請求 Tomcat 服務器後再返回。若是流量不是很大,靜態資源能夠和 Tomcat 服務器放在同一臺主機上,不然須要將靜態資源與 Tomcat 服務器分開。瀏覽器

我司對於資源文件的作法是新建一個二級域名,該域名只用於加載靜態資源文件。如 res.domain.com,這樣作的好處是簡化了在 Nginx 的 配置。服務器

配置 Nginx

首先須要安裝 Nginx, 能夠參考個人另一篇文章 Nginx實現Tomcat集羣。這裏只須要參考到安裝 Nginx 便可。dom

Nginx 靜態資源配置ide

打開 Nginx 配置文件

vim /usr/local/nginx/conf/nginx.conf

添加 server

server {
    # 只接收靜態資源請求
    listen       80;
    server_name   res.domain.com;
    charset utf8;

    default_type            text/plain;
    add_header Access-Control-Allow-Origin *;
    #access_log logs/heiyan.image.access.log  click;

    location ~* \.(zip|rar|gz|tar.gz|gz|exe)$ {
        return 500;
    }

    location / {
        #資源文件的目錄
        root /home/resources;
        index index.html;

        expires 30d;
        default_type      text/plain;
    }
}
server {
    # 接收動態請求
    listen       80;
    server_name  www.domain.com;
    charset utf8;

    access_log logs/access.log  main;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

拷貝項目中資源文件到指定的資源目錄

在 Nginx 的配置文件中指定了資源文件的目錄爲 /home/resources ,因此須要將資源拷貝到該目錄下,進入上文下載的項目的目錄中,將資源目錄(我這裏是**_res目錄)拷貝到 /home/resources**目錄下面。

cp -r _res /home/resources

拷貝完成後的目錄應該是: /home/resources/_res

在 **/home/resources/_res** 目錄下放一張圖片 a.jpg ,用於測試。

測試靜態資源獲取

啓動 Nginx

打開瀏覽器訪問: http://res.domain.com/_res/a.jpg

若是是動態請求,則使用 http://www.domain.com 域名

返回結果:

mark

由於靜態資源文件包含 css/js 等文件,修改提交後須要拷貝增量與修改的文件到 /home/resources 目錄下,若是嫌麻煩,能夠直接在 Nginx 配置文件中,配置 路徑爲項目的資源文件夾根路徑,好比 **/home/wide-api/src/main/java/resources/_res**, 這種在更新代碼以後,能夠直接請求到新的資源文件。以後會寫一篇經過阿里雲CDN來完成靜態分離。

注: 因爲個人是在虛擬機上的 Nginx 進行測試,也沒有域名,且是minimal版本系統,沒有桌面環境,因此須要配置宿主機的hosts, 在宿主機的瀏覽器中訪問。在真實服務器且有本身綁定到服務器上域名的就直接測試便可。

使用 SwitchHosts 軟件 配置 hosts,個人虛擬機 ip 爲192.168.200.129

192.168.200.129 www.domain.com res.domain.com
相關文章
相關標籤/搜索