# client和nginx簡易互動過程
- step1:client發起http請求
- step2:dns伺服器解析網域名稱得到主機ip
- step3:預設埠為80,通過ip+port建立tcp/ip鏈結
- step4:建立連線的tcp/ip三次握手,建立成功傳送資料報
- step5:nginx匹配請求
- case .html: 靜態內容,分發靜態內容響應
- case .php: php指令碼,**請求內容到php-fpm程序,分發php-fpm返回的內容響應
- step6:斷開連線的tcp/ip四次握手,斷開連線
# nginx和php簡易互動過程
- 背景:web server和服務端語言互動依賴的是cgi(common gateway inte***ce)協議,由於cgi效率不高(每次請求都需要重新起乙個php-cgi解析器程序,
這中間會進行載入php.ini配置等一系列的操作)所以後期產生了fastcgi協議(一種常駐型的cgi協議),php-cgi實現了fastcgi,但是相比php-cgi,php-fpm提供
了更好的php程序管理方式,可以有效控制記憶體和程序並可以平滑過載php配置
- 流程:
- step1:nginx接收到一條http請求,會把環境變數,請求引數轉變成php能懂的php變數
```// nginx 配置資料
location ~ \.php$
```- step2:nginx匹配到.php結尾的訪問通過fastcgi_pass命令傳遞給php-fpm.sock檔案,其實這裡 的ngnix發揮的是反向**的角色,把http協議請求轉到fastcgi協議請求
```// nginx 配置資料
location ~ \.php$
```- step3:php-fpm.sock檔案會被php-fpm的master程序所引用,這裡nginx和php-fpm使用的是 linux的程序間通訊方式unix domain socks,是一種基於檔案而不是網路底冊協議的通訊方式
- step4:php-fpm的master程序接收到請求後,會把請求分發到php-fpm的子程序,每個php-fpm 子程序都包含乙個php解析器
- step5:php-fpm程序處理完請求後返回給nginx
# 附錄
- php-fpm程序管理的三種方式
+ static: 靜態方式,php-fpm啟動時及啟動最大子程序數,優點是不需要額外的fork子程序過程,適合專門的伺服器
- 引數:
- pm.max_children: 最大子程序數
+ dynamic: 動態方式,配置最大數和啟動數,空閒數,實際使用過程fork程序,優點靈活節省記憶體,缺點fork過程有效能消耗
- 引數:
- pm.max_children: 最大程序數
- pm.start_servers: 啟動數,等於min_spare_servers + (max_spare_servers - min_spare_servers)/2
- pm.min_spare_servers: 最小空閒程序數,如果空閒程序(idle)數小於該值,啟動乙個子程序
- pm.max_spare_servers: 最大空閒程序數,如果空閒程序(idle)數大於該值,kill乙個子程序
+ ondemand: 按需方式, 不啟動子程序,按需fork,優點節省資源
- 引數:
- pm.max_children:
- pm.process_idle_timeout: 子程序空閒多少秒後被kill
scroll offset和client如何區分
title 比較 1.clientx與clienty window.nl ad function oevent.clientx是指滑鼠到可視區左邊框的距離。oevent.clienty是指滑鼠到可視區上邊框的距離。2.offsetwidth offsetheight offsetleft和offse...
scroll offset和client的區別
整體布局 12 title 比較 1.clientx與clienty window.onload function oevent.clientx是指滑鼠到可視區左邊框的距離。oevent.clienty是指滑鼠到可視區上邊框的距離。2.offsetwidth offsetheight offsetl...
nginx的簡易安裝
環境 centos 6.7安裝pcre perl相容的正規表示式 root zero yum install pcre pcre devel y安裝ssl root zero yum install openssl devel y root zero tools wget減壓 root zero t...