|
|
Nginx
|
|
路由到 www.test.com/index.php
|
|
加載 nginx 的 fast-cgi 模塊
|
|
fast-cgi 監聽 127.0.0.1:9000 地址
|
|
www.test.com/index.php 請求到達 127.0.0.1:9000
|
|
等待處理…

Nginx 與 php-fpm 的結合

在 Linux 上,nginx 與 php-fpm 的通信有 tcp socket 和 unix socket 兩種方式。

tcp socket 的優點是可以跨服務器,當 nginx 和 php-fpm 不在同一臺機器上時,只能使用這種方式。

Unix socket 又叫 IPC(inter-process communication 進程間通信) socket,用于實現同一主機上的進程間通信,這種方式需要在 nginx配置文件中填寫 php-fpm 的 socket 文件位置。

兩種方式的數據傳輸過程如下圖所示:

二者的不同:

由于 Unix socket 不需要經過網絡協議棧,不需要打包拆包、計算校驗和、維護序號和應答等,只是將應用層數據從一個進程拷貝到另一個進程。所以其效率比 tcp socket 的方式要高,可減少不必要的 tcp 開銷。不過,unix socket 高并發時不穩定,連接數爆發時,會產生大量的長時緩存,在沒有面向連接協議的支撐下,大數據包可能會直接出錯不返回異常。而 tcp 這樣的面向連接的協議,可以更好的保證通信的正確性和完整性。

Nginx 與 php-fpm 結合只需要在各自的配置文件中做設置即可:

1) Nginx 中的配置

以 tcp socket通信為例

server {
 listen  80; #監聽 80 端口,接收http請求
 server_name www.test.com; #就是網站地址
 root /usr/local/etc/nginx/www/huxintong_admin; # 準備存放代碼工程的路徑
 #路由到網站根目錄 www.test.com 時候的處理
 location / {
  index index.php; #跳轉到 www.test.com/index.php
  autoindex on;
 } 

 #當請求網站下 php 文件的時候,反向代理到 php-fpm
 location ~ \.php$ {
  include /usr/local/etc/nginx/fastcgi.conf; #加載 nginx 的 fastcgi 模塊
  fastcgi_intercept_errors on;
  fastcgi_pass 127.0.0.1:9000; # tcp 方式,php-fpm 監聽的 IP 地址和端口
  # fasrcgi_pass /usr/run/php-fpm.sock # unix socket 連接方式
 }

}

2) php-fpm 的配置

listen = 127.0.0.1:9000
# 或者下面這樣
listen = /var/run/php-fpm.sock

注意,在使用 unix socket 方式連接時,由于 socket 文件本質上是一個文件,存在權限控制的問題,所以需要注意 nginx 進程的權限與 php-fpm 的權限問題,不然會提示無權限訪問。(在各自的配置文件里設置用戶)

通過以上配置即可完成 php-fpm 與 nginx 的通信。

在應用中的選擇

如果是在同一臺服務器上運行的 nginx 和 php-fpm,且并發量不高(不超過1000),選擇unix socket,以提高 nginx 和 php-fpm 的通信效率。

如果是面臨高并發業務,則考慮選擇使用更可靠的 tcp socket,以負載均衡、內核優化等運維手段維持效率。

若并發較高但仍想用 unix socket 時,可通過以下方式提高 unix socket 的穩定性。

1)將sock文件放在 /dev/shm 目錄下,此目錄下將 sock 文件放在內存里面,內存的讀寫更快。

2)提高 backlog

backlog 默認位 128,1024 這個值最好換算成自己正常的 QPS,配置如下。

nginx.conf 文件中

server {
  listen 80 default backlog = 1024;
  }

php-fpm.conf 文件中

listen.backlog = 1024

3)增加 sock 文件和 php-fpm 實例

在 /dev/shm 新建一個 sock 文件,在 nginx 中通過 upstream 模塊將請求負載均衡到兩個 sock 文件,并且將兩個 sock 文件分別對應到兩套 php-fpm 實例上。

贊(0)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » PHP-FPM和Nginx的通信機制

登錄

找回密碼

注冊

主站蜘蛛池模板: 国产成人无码AV片在线观看不卡| 国内精品伊人久久久久影院对白| 一本大道久久香蕉成人网| 色国产视频| 日本乱一区二区三区在线| 亚洲欧洲∨国产一区二区三区 | 四虎在线播放亚洲成人| 国产精品自拍中文字幕| 亚洲人成影院在线观看| 成人免费乱码大片a毛片| 综合色一色综合久久网| 国产黄色三级三级看三级| 好深好湿好硬顶到了好爽| 青草热在线观看精品视频| 中文字幕日韩精品人妻| 亚洲欧美综合中文| 综合色在线| 成在人线av无码免费| 国产乱啊有帅gv小太正| 国产精品自拍中文字幕| 亚洲欧美日韩综合一区在线 | 国产成人亚洲综合图区| 精品人妻系列无码人妻免费视频| 国产精品va无码一区二区| 午夜免费福利小电影| 亚洲人成色99999在线观看| 久久天天躁狠狠躁夜夜婷 | 国产欧亚州美日韩综合区| 国产精品自在拍首页视频8| 少妇人妻偷人精品系列| 亚洲丰满老熟女激情av| 90后极品粉嫩小泬20p| 国产成人精品性色av麻豆| 鲁鲁网亚洲站内射污| 国产女人喷潮视频免费| 蜜臀视频一区二区在线播放| 亚洲AV成人片在线观看| 欧美一进一出抽搐大尺度视频| 成人国产精品日本在线观看| 精品在免费线中文字幕久久| 中文字幕人妻不卡精品|