標籤:strong 搜尋 image php-fpm 代理 oca alt str 目錄
Nginx的靜態處理能力很強,但是動態處理能力不足,因此,在企業中常用動靜分離技術。
針對PHP的動靜分離:靜態頁面交給Nginx處理,動態網頁面交給PHP-FPM模組或Apache處理。
在Nginx的配置中,是通過location配置段配合正則匹配實現靜態與動態網頁面的不同處理方式
一、Nginx正則匹配
常用的正則匹配規則
^~ : 標識符後面跟一個字串。Nginx將在這個字串匹配後停止進行Regex的匹配,如 location ^~ /images/,它在匹配了/images/這個字串後就停止搜尋其它正則的location
= : 標識精確尋找地址,如 location = / ,只會匹配uri為/的請求
~ : 區分大小寫匹配
~* : 不區分大小寫匹配
!~ : 對區分大小寫匹配取非
!~* : 對不區分大小寫匹配取非
經常會用到的Regex有
* ? + . () | ^ $
特殊字元說明{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提取,最後反饋給用戶端。
Nginx+Apache動靜分離