|
|
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的通信機制

登錄

找回密碼

注冊

主站蜘蛛池模板: 亚洲一级特黄大片在线观看| 中文字幕国产精品综合| 久久综合综合久久综合| 天堂网在线观看| 衡山县| 午夜大片免费男女爽爽影院| 亚洲日韩成人无码不卡网站| 国产欧美另类久久久精品不卡 | 野花在线观看免费观看高清| 野花社区www视频日本| 亚洲AV无码秘?蜜桃蘑菇| 麻豆蜜桃伦理一区二区三区| 亚洲乱熟女一区二区三区| 人妻精品久久无码专区精东影业 | 国产精品制服丝袜无码| 先锋影音男人av资源| 四虎成人在线观看免费| 无码国产玉足脚交极品播放| 九九热在线精品视频九九| 久久精品国产亚洲av电影| 国产精品美女一区二区三| 四虎精品永久在线视频| 无遮挡高潮国产免费观看| 18禁无遮挡啪啪无码网站破解版| 免费视频欧美无人区码| 亚洲av成人一区在线| 五月综合网亚洲乱妇久久| 不卡一区二区国产精品| 欧美激情 亚洲 在线| 影音先锋啪啪av资源网站| 福利网午夜视频一区二区| 国产精品一线天在线播放| 久久99国产精一区二区三区!| 石首市| 五月综合网亚洲乱妇久久| 精品午夜福利在线观看 | 97在线视频人妻无码| 亚洲av色香蕉一二三区| 亚洲愉拍一区二区三区| 在线视频精品中文无码| 欧美牲交a欧美牲交aⅴ一|