client和nginx簡易互動過程

2021-09-26 10:04:33 字數 1770 閱讀 1909

# 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...