nginx動靜分離實現:
nginx是一種輕量級,高效能,多程序的web伺服器,非常適合作為靜態資源的伺服器使用,而動態的訪問操作可以使用穩定的apache、 tomcat及iis等來實現,這裡就以nginx作為**伺服器的同時,也使用其作為靜態資源的伺服器,而動態的訪問伺服器就以apache為例說明。
一、原理
原理:
說明:1、**伺服器和靜態伺服器即為一台伺服器上,這裡只是為了明顯區分動靜分離所處伺服器的不同;
2、靜態伺服器中,存放的資源主要是源**檔案、、屬性、樣式以及其它所有非動態的資源檔案;
3、排程規則,即為**伺服器,這裡是nginx的伺服器排程規則;
4、動態伺服器,其種模擬較繁多,可以是apache、tomcat、iis以及其它web伺服器,它們一般分別隸屬於一台伺服器;
二、實現
1、實現說明
如上圖所示,當客戶端訪問**伺服器時:
首先,載入和顯示存放在靜態伺服器中的靜態資源,這裡以html為例;
其次,如果上一步沒有匹配對應的資源,我們就認為是動態訪問請求,那麼就直接訪問參與負載均衡的伺服器列表中的某一台伺服器的動態操作;
最後,nginx作為web伺服器載入靜態資源(html、css、js、image),而靜態資源如果需要動態獲取資料,並填充到頁面顯示,會自動去往負載伺服器獲取並返回,在實現了動態分離的同時,也參與了伺服器的負載均衡。
2、準備工作
準備兩台計算機裝置,分別為:
靜態伺服器:169.254.195.161
動態伺服器:169.254.28.29
3、安裝配置
首先,在靜態伺服器中安裝nginx伺服器,在動態伺服器中安裝apache伺服器,具體安裝過程中這裡省略;
其次,分別配置nginx和apache,配置如下:
nginx.conf裡:
upstream webservers { #動態訪問時定向到的位址
ip_hash;
server 169.254.28.29 max_fails=2 fail_timeout=2; #定義到.29的ip上
server {
listen 80;
server_name localhost;
access_log/usr/local/nginx/logs/access.log;
error_log/usr/local/nginx/logs/error.log;
#limitbuffer size and overflows
client_body_buffer_size16k;
client_header_buffer_size1k;
client_max_body_size1m;
#default char set
charset utf-8;
#預設靜態資源
location / {
root /project/cwteam; #靜態檔案根目錄
index index.html index.htm index.php;
allow all;
#動態資源載入
location ~\.(php|jsp)?$ {
proxy_pass http://webservers; #如果是訪問以.php/jsp結尾的就直接定向到http://webservers;
這裡只羅列apache根目錄的配置路徑,如下:
documentroot 「d:/project/cwteam」
options indexesfollowsymlinks includes execcgi
allowoverride all
require all granted
最後,啟動nginx和apache服務,並驗證是否成功啟動。
三、驗證
首先,在靜態伺服器中的web根目錄下,放置乙個static.html檔案,內容如下:
"ajaxdync">
其次,在動態伺服器中的web伺服器目錄下放在乙個動態指令碼dynamic.php,內容如下:
<?php
if($_get['action']=='ok'){
echo'hello world!'.'---ip:169.254.28.29';
note:
1、為了區分動靜伺服器內的伺服器指令碼,我們在靜態伺服器中的dynamic.php內容:
<?php
if($_get['action']=='ok'){
echo'hello world!'.'---ip:169.254.195.161';
而在動態伺服器中的dynamic.php內容如下:
<?php
if($_get['action']=='ok'){
echo'hello world!'.'---ip:169.254.28.29';
2、需要保證動靜伺服器擁有同樣的**專案,一般使用rsync同步軟體同步不同伺服器中的專案資源檔案,關於rsync會在後續總結介紹使用。
最後,開啟瀏覽器輸入192.168.1.100,結果如下:
從上圖,我們知道動靜已經分離成功了,因為靜態資源頁面html載入的是靜態伺服器的,而動態請求操作則訪問的是動態伺服器。
Nginx動靜分離實現
nginx動靜分離實現 nginx是一種輕量級,高效能,多程序的web伺服器,非常適合作為靜態資源的伺服器使用,而動態的訪問操作可以使用穩定的apache tomcat及iis等來實現,這裡就以nginx作為 伺服器的同時,也使用其作為靜態資源的伺服器,而動態的訪問伺服器就以apache為例說明。原...
nginx實現動靜分離
什麼是動靜分離 第乙個,nginx本身就是乙個高效能的靜態web伺服器 第二個,其實靜態檔案有乙個特點就是基本上變化不大,所以動靜分離以後我們可以對靜態檔案進行快取 或者壓縮提高 效能 靜態資源的型別 在nginx的conf目錄下,有乙個mime.types檔案裡邊列出了 靜態資源的型別,如下 當使...
nginx 實現動靜分離
為了加快 的解析速度,可以把動態頁面和靜態頁面由不同的伺服器來解析,加快解析速度。降低原來單個伺服器的壓力。在動靜分離的tomcat的時候比較明顯,因為tomcat解析靜態很慢,其實這些原理的話都很好理解,簡單來說,就是使用正規表示式匹配過濾,然後交個不同的伺服器。1 準備環境 準備乙個nginx ...