1. 程式人生 > >Apache與Nginx動靜分離

Apache與Nginx動靜分離

one href tar .com spl 客戶機 serve ati 使用

概述

  Nginx的靜態處理能力很強,但是動態處理能力不足,因此,在企業中常用動靜分離技術。動靜分離技術其實是采用代理的方式,在server{}段中加入帶正則匹配的location來指定匹配項
  針對PHP的動靜分離:靜態頁面交給Nginx處理,動態頁面交給PHP-FPM模塊或Apache處理。
  在Nginx的配置中,是通過location配置段配合正則匹配實現靜態與動態頁面的不同處理方式

實現動靜分離的方式有三種:

  • 靜態web服務放置在公網中
  • 靜態web服務放置在代理服務器中
  • 靜態web服務放置在內網的單獨服務器上

常用的方案:在公網和 內網都提供靜態頁面處理的服務器

Nginx的正則匹配

常用的正則匹配規則

  ^~ : 標識符後面跟一個字符串。Nginx將在這個字符串匹配後停止進行正則表達式的匹配,如 location ^~ /images/,它在匹配了/images/這個字符串後就停止搜索其它正則的location

  = : 標識精確查找地址,如 location = / ,只會匹配uri為/的請求

  ~ : 區分大小寫的匹配

  ~* : 不區分大小寫的匹配

  !~ : 對區分大小寫的匹配取非

  !~* : 對不區分大小寫的匹配取非

經常會用到的正則表達式有

  * ? + . () | ^ $

特殊字符說明

  {n} : 重復n次

  {n,} : 重復n次或更多次

  {n,m} : 重復n到m次

  *? : 重復任意次,但盡可能少重復

  +? : 重復1次或更多次,但盡可能少重復

  ?? : 重復0次或1次,但盡可能少重復

  {n,m}? : 重復n到m次,但盡可能少重復

  {n,}? : 重復n次以上,但盡可能少重復

案例

技術分享

說明:本案例(1)使用Nginx調度服務器做靜態數據處理(2)使用內網中獨立的Nginx服務器處理靜態數據

1.使用Nginx調度處理靜態數據(視屏,圖片,音樂等可視化數據),LAMP處理動態數據

(1)搭建LAMP主機

參考博客:http://www.cnblogs.com/zhichaoma/p/7487186.html

(2)配置Nginx調度服務器

搭建Nginx服務:參考博客:http://www.cnblogs.com/zhichaoma/p/7570210.html

在server{};段中加入以下代碼

location ~ \.php$ {                                        #匹配以.php為結尾的動態頁
  proxy_pass  http://LAMP的IP地址(192.168.10.10);      #proxy_xy 意思是代理交給誰
  }

檢查配置文件是否正確並啟動

nginx -t
nginx

將靜態數據文件拷貝到Nginx服務的網站根目錄下

location / {
      root   html;        //可以在這裏指定指定根目錄
      index    index.html index.htm;
  }

這裏將數據默認存放在 nginx/html/ 下

(3)在LAMP服務器上創建一個 test.php測試文件

技術分享
<?php
echo "Welcome to My site"."<br/>";
echo "<img src=‘1.jpg‘>";
?>
test.php

使用客戶端訪問Nginx調度服務器的IP地址,Nginx調度服務器會將php的請求轉交給LAMP服務器處理,而靜態數據(這裏是一張圖片)會從Nginx調度服務器中去取

2.使用內網中獨立的Nginx的服務器處理靜態數據

在server{};段中加入以下代碼

location ~ \.php$ {                                        #匹配以.php為結尾的動態頁
  proxy_pass  http://LAMP的IP地址(192.168.10.10);      #proxy_xy 意思是代理交給誰
  }

location ~ .*\.(gif|jpg|jpeg|bmp|swf)$  {                #這段代碼意思是任意網址以這5種格式為結尾就到192.168.10.20服務器尋找資源
    proxy_pass http://處理靜態數據的Nginx的服務器的IP地址(192.168.10.20);
  }

將靜態數據文件拷貝到Nginx服務的網站根目錄下檢查配置文件,啟動服務,使用客戶機訪問驗證

Apache與Nginx動靜分離