Nginx呼叫遠端php fpm

2022-05-18 20:04:47 字數 2319 閱讀 9987

在nginx伺服器的情況下,當我們輸入 http://localhost:8080/index.php回車的時候

瀏覽器會將請求傳送給nginx,nginx會根據我們所配置的以.php結尾的php的檔案交給fastcgi

location ~\.php
通過fastcgi_pass命令將請求**給fastcgi 即php-fpm;

php-fpm是fastcgi的一種實現。

一般我們會將收到的請求**到本地,即php-fpm所監聽的本地埠 127.0.0.1:9000

如果我們想實現分布式,將我們的請求**給遠端的php-fpm來處理該怎麼去實現呢?

1.修改本地nginx fastcgi_pass 監聽的ip:埠

fastcgi_pass 127.0.0.1:9000 修改為 x.x.x.x:9000

其中x.x.x.x代表遠端主機的ip位址

2.修改遠端php-fpm的所監聽的ip:埠

將遠端的php-fpm所監聽的ip:埠,由127.0.0.1:9000改為:0.0.0.0:9000

127.0.0.1 代表本機

如果我們不修改遠端php-fpm監聽的ip:埠為0.0.0.0:9000

在本地直接訪問  http://localhost:8081/index.php nginx會報錯出現 (其中x.x.x.x代表我遠端主機位址)

一般我們php-fpm沒有啟動的時候會丟擲這個錯誤,但是我們的遠端php-fpm明明已經開啟了,所以無法連線到遠端php-fpm所監聽的位址。

"接下來我們將php-fpm監聽的ip:埠改為:0.0.0.0:9000;重啟php-fpm,然後我們繼續訪問 http://localhost:8081/index.php

這時候瀏覽器出現了

找不到檔案?為什麼呢?我接著分析nginx的配置(其中x.x.x.x代表我的遠端主機位址)

location ~\.php
請特別注意」fastcgi_script_name」一行(黑體部分),php-cgi特別需要此行資訊來確定php檔案的位置。也就是說,當我們將請求**給我們fastcgi(即php-fpm)的時候,會把所請求的檔案確切路徑也發給fastcgi(即php-fpm);

假如我nginx本地伺服器根目錄為/nginx,那麼我所請求的index.php的絕對路徑是/nginx/index.php,nginx在將請求**給遠端php-fpm的時候,也會把這個路徑發給遠端php-fpm,遠端php-fpm會根據這個路徑/nginx/index.php找到index.php並且執行,將結果返回給本地nginx伺服器;這也就意味著我們遠端php-fpm所在的主機必須存在路徑為/nginx/index.php的檔案才行,否則會報404的錯誤,檔案不存在(即我們所看到的file not found.);

接下來在根目錄下建立nginx 並且在nginx內新建index.php

cd /mkdir /nginx 建立nginx

cd nginx

touch index.php 建立檔案

vim index.php 編輯輸入php**

<?php 

echo 'remote php-fpm';

?>

再次訪問http://localhost:8081/index.php

會出現如下的結果:

成功訪問。

小結:1:遠端php-fpm監聽ip:埠 改為0.0.0.0:9000(埠可以適當修改,預設9000)

回覆:學習資料有驚喜哦

centos 配置php fpm和nginx的通訊

以下是nginx的預設配置檔案 server error page 404 404.html redirect server error pages to the static page 50x.html error page 500 502 503 504 50x.html location 50...

nginx和php fpm的配置

一 nginx 配置檔案 nginx.conf 原則 woker程序數與cpu核數一致。master程序用以管理woker程序,高併發可以考慮woker程序設定提高為cpu核數 2 引數 worker processes 1 原因 nginx作為 是提交請求給php fpm的,並沒有涉及到io 即讀...

nginx與php fpm的執行方式

nginx 是非阻塞io io復用模型,通過作業系統提供的類似 epoll 的功能,可以在乙個執行緒裡處理多個客戶端的請求。nginx 的程序就是執行緒,即每個程序裡只有乙個執行緒,但這乙個執行緒可以服務多個客戶端。php fpm 是阻塞的單執行緒模型,pm.max children指定的是最大的程...