Nginx+Apache動靜分離


  Nginx的靜態處理能力很強,但是動態處理能力不足,因此,在企業中常用動靜分離技術。動靜分離技術其實是采用代理的方式,在server{}段中加入帶正則匹配的location來指定匹配項

  針對PHP的動靜分離:靜態頁面交給Nginx處理,動態頁面交給PHP-FPM模塊或Apache處理。

  在Nginx的配置中,是通過location配置段配合正則匹配實現靜態與動態頁面的不同處理方式

一、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次以上,但盡可能少重復

 二、配置實現Nginx動靜分離

1、需求分析:本案例根據企業需要,將配置Nginx實現動靜分離,對php頁面的請求轉發給LAMP處理,而靜態頁面交給Nginx,以實現動靜分離。客戶請求靜態數據給Nginx,Nginx直接應答客戶端,當請求動態數據到Nginx時,Nginx讓客戶端去找LAMP,通過代理的方式,LAMP就和客戶端連接了。

2、配置步驟:分別配置動態分離和靜態分離

(1)架設並調試后端LAMP架構,指定域名為www.bt.com,IP地址為192.168.10.23,創建動態頁面test.php。

(2)配置Nginx(192.168.10.22)處理動態頁面請求,並把域名改為www.test.com 在server{};段中加入以下代碼,檢測語法后,重啟Nginx

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

(3)客戶端輸入http://192.168.10.22/test.php 成功后動態分離就實現了,接下來再配置靜態分離

(4)配置Nginx處理靜態頁面請求,在server{};中加入以下代碼,檢測語法后,重啟Nginx

location ~ .*\.(gif|jpg|jpeg|bmp|swf)$  {               #這段代碼意思是任意網址以這5種格式為結尾就到Nginx根目錄下的html文件夾尋找資源
  root   html;
  expires 1d; #緩存一天   }

(5)在nginx的html目錄中,放入圖片aa.jpg,然后在apache的動態測試頁test.php中添加

<html>
<body>
<img src="http://192.168.10.22/aa.jpg">
</body>
</html>

(6)客戶端輸入http://192.168.10.22/test.php測試,由於test.php是動態頁面,因此客戶端會找到LAMP架構中的Apache,然后調取圖片aa.jpg是靜態數據,所以從Nginx提取,最后反饋給客戶端。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM