運維二 LNMP環境 動靜網站 地址重寫

qq_44692240發表於2020-12-10

運維二 nginx

網站的動靜分離

環境

  • 需要部署環境

    • LNMP環境 L : linux N : nginx M : mariadb mysql P : php網站開發語言
  • 安裝包

    yum -y install mariadb mariadb-server mariadb-devel
    yum -y install php php-fpm php-mysql
             #php  #php-fpm安裝可以讓nginx具有動態解析能力  #php-mysql連線mysql資料庫的庫
    netstat -ntulp | grep 9000 #php-fpm
    netstat -ntulp | grep 3306 #mysql
    

開啟php動態解析

vim /usr/local/nginx/conf/nginx.conf
#========================================
events {
	#......
}
http {
	#......
	server {
		listen 80;
		server_name localhost;  #域名服務
		
		location / {
			root html;						#網頁存放
			index	index.html index.htm;    #預設網頁順序 不輸入具體檔案就會順序找顯示找到為止
		}
		
		error_page   500 502 503 504 /50x.html  #定義狀態頁面
		location = /50x.html {
			root html;
		}
		
		location ~ \.php$ {                #~  啟用正則 .php$ 對應.php結尾的檔案
            root           html;
            fastcgi_pass   127.0.0.1:9000;       #指定監聽的地址和埠號
            fastcgi_index  index.php;
        #   fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;    #包含FastCGI其他相關配置 1個FastCGI大概消耗25M記憶體
        }

	}

}
#========================================

執行流程分析

  1. 客戶端傳送請求到伺服器80埠 伺服器80埠服務為Nginx
  2. nginx收到請求對請求分析,如果是靜態頁面,則返回相應的靜態頁面資料
  3. 如果是動態頁面如php頁面,就會將請求轉交給php-fpm服務(9000),php-fpm管理FastCGI對php頁面進行動態解析,返回解析後的結果給nginx服務
  4. 最後nginx將網頁資料發回給客戶端

FastCGI

什麼是FastCGI
  • FastCGI是一個可伸縮地,高速地在HTTP伺服器和動態指令碼語言間通訊的介面(FastCGI在Linux下是socket(可以是檔案socket,也可以是ip socket)),主要優點是把動態語言的和HTTP伺服器分離開來。多數流行的HTTP伺服器都支援FastCGI,包括Apache、Nginx和lightpd
  • FastCGI被許多指令碼語言支援,比較流行的指令碼語言之一為PHP。
  • FastCGI介面方式採用C/S架構,可以將HTTP伺服器和指令碼解析伺服器分開,同時指令碼解析伺服器上啟動一個或多個指令碼解析守護程式,當HTTP伺服器每次遇到動態程式時,可以將其直接交付給FastCGI程式執行。
  • 直白將,HTTP服務和指令碼語言解析分開,提高系統效能
FastCGI的重要特點
  • FastCGI是HTTP伺服器和動態指令碼語言間通訊的介面或者工具
  • 優點是把動態語言解析和HTTP伺服器分離開來
  • Nginx、Apache、Lighttpd以及多數動態語言都支援FastCGI
  • FastCGI介面方式採用C/S架構,分為客戶端(HTTP伺服器)和服務端(動態語言解析伺服器)
  • PHP動態語言服務端可以啟動多個FastCGI的守護程式
  • HTTP伺服器通過FastCGI客戶端和動態語言FastCGI服務端通訊
php-fpm配置檔案
vim /etc/php-fpm.d/www.conf
#====================================
pm.start_servers = 5        #75行左右註釋符是; 代表開啟時初始FastCGI個數為5
							#一般一個FastCGI消耗25M記憶體
#====================================

地址重寫

重要配置引數

  • rewrite regex replacement flag
  • rewrite 舊地址 新地址 [選項]

頁面重定向例項

vim /usr/local/nginx/conf/nginx.conf
#=========================================
server{
	rewrite /a.html /b.html;    #在server全域性塊中重寫路徑   
	#支援正則  所以/a.html是模糊匹配  輸入192.168.4.2/haha/a.html也會到/b.html
	rewrite ^/a.html$  /b.html;            #正則確定是/a.html才會跳轉
	#保證只有/a.html才會跳轉 不然/sds/a.html 或者/a.htmlsakdjaksjd都會跳轉
	rewrite ^/a.html$  /b.html redirect;   #新增redirect之後會改變位址列  重定向
	
	
	#當有多條rewrite 並且符合多條時,匹配即停止
	
	rewrite / https://www.baidu.com;        #匹配所有  轉到百度   全替換 所以位址列會變
			  #http 或者 https必須加
	rewrite ^/(.*)$   https://www.baidu.com/$1;    #$1類似sed保留空間
											#本質是讓使用者在被重定向之後能夠訪問到之前具體的網頁
}
#==========================================

根據瀏覽器重定向例項

vim /usr/local/nginx/conf/nginx.conf
#====================================== server全域性塊中
server{
	if ($http_user_agent ~* firefox){ #針對firefox瀏覽器重定向到專屬頁面
		rewrite ^/(.*)$  /firefox/$1;
	}
}
#======================================# ngx_http_core_module提供變數定義
#http://nginx.org/en/docs/http/ngx_http_core_module.html  官方文件地址

相關文章