如果只讓Nginx做負載均衡和代理服務器,無疑會浪費掉很多Nginx的閒置資源,其實Nginx有很大的靜態文件處理功能,那麼我們完全可以把後端apache或Tomcat服務器上的靜態文件交給Nginx來處理。
如圖,一臺Nginx和兩臺Apache服務器做了負載均衡,我們只需要訪問Nginx服務器就能獲取到Apache上的網頁信息。我們把這個網站的靜態文件放在Nginx的web目錄中,把動態文件放在Apache的web主目錄中。這樣,當我們訪問這個網站時,靜態文件會在Nginx中讀取,動態文件,會在Apache中讀取。
配置文件部分內容如下:
http {
……
upstream app_web {
server 192.168.1.101 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.102 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 80;
server_name www.abc.com;
location / {
root /data1/www/abc;
index index.php index.html index.htm;
proxy_pass http://app_web;
}
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
root /data1/www/abc; #本地靜態文件存放目錄
expires 3d; #過期時間
}
}
}
淺藍色部分是需要設置的內容,依靠匹配網站文件後綴來決定是否爲靜態文件,然後指定本地存放靜態文件的路徑,並設定過期時間即可。