|
|
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 實例上。
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:
三五互聯知識庫 »
PHP-FPM和Nginx的通信機制
主站蜘蛛池模板:
97伦伦午夜电影理伦片|
国产成人久久综合一区|
日韩精品一区二区亚洲专区|
乱伦综合网|
成人午夜国产内射主播|
色七七亚洲|
97人妻精品一区二区三区在线|
亚洲性天堂|
亚洲av永久无码精品漫画|
伊人久久大香线蕉AV网|
亚洲精品国产V片在线观看|
亚洲高清aⅴ日本欧美视频|
国产免费一区二区不卡|
天堂亚洲免费视频|
亚洲综合国产伊人五月婷|
韩国日本三级在线观看|
蜜臀午夜av一二三区|
久久久噜噜噜久久久|
欧美精品在线视频|
中文字幕国产精品自拍|
精品无码国产污污污免费|
日韩a一级欧美一级|
欧美怡春院|
一级毛片免费不卡在线|
波多野结衣一区二区三区高清在线|
国产成人无码精品久久久露脸|
内射无套内射国产精品视频|
日本一区不卡高清更新二区
|
精品久久综合日本久久网|
午夜av高清在线观看|
福利区免费在线观看视频|
亚洲人成色777777无码|
欧亚激情偷乱人伦小说专区|
国产成人精品aaaa视频一区|
亚洲精品漫画一二三区
|
免费人成视频在线视频电影|
一本色道久久综合亚洲色|
久久亚洲色www成人|
日韩在线中文字幕|
天天做天天爱天天爽综合网|
亚洲ⅴa曰本va欧美va视频|