首頁 > 後端開發 > php教程 > 淺談PHP-FPM、Nginx和FastCGI間的關係

淺談PHP-FPM、Nginx和FastCGI間的關係

青灯夜游
發布: 2023-04-10 08:00:02
轉載
3153 人瀏覽過

這篇文章為大家聊聊PHP-FPM、Nginx、FastCGI三者之間的關係,以及 Nginx 反向代理和負載平衡的配置。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

淺談PHP-FPM、Nginx和FastCGI間的關係

PHP-FPM,Nginx,FastCGI 之間的關係

FastCGI 是一個協議,它是應用程式和WEB 伺服器連接的橋樑。 Nginx 並非直接與 PHP-FPM 通信,而是將請求透過 FastCGI 交給 PHP-FPM 處理。

location ~ \.php$ {
    try_files $uri /index.php =404;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_buffers 16 16k;
    fastcgi_buffer_size 32k;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}
登入後複製

這裡 fastcgi_pass 就是把所有 php 請求轉寄給 php-fpm 來處理。透過netstat 指令可以看到,127.0.0.1:9000 這個連接埠上執行的程序就是php-fpm.

淺談PHP-FPM、Nginx和FastCGI間的關係

Nginx 反向代理

Nginx 反向代理程式最重要的指令是proxy_pass,如:

location ^~ /seckill_query/ {
    proxy_pass http://ris.filemail.gdrive:8090/;
    proxy_set_header Host ris.filemail.gdrive;
}

location ^~ /push_message/ {
    proxy_pass http://channel.filemail.gdrive:8090/;
    proxy_set_header Host channel.filemail.gdrive;
}

location ^~ /data/ {
    proxy_pass http://ds.filemail.gdrive:8087/;
    proxy_set_header Host ds.filemail.gdrive;
}
登入後複製

透過location 符合url 路徑,將其轉送到另一個伺服器處理。

透過負載平衡 upstream 也可以實現反向代理。

Nginx 負載平衡

介紹upstream 模組:

負載平衡模組用於從”upstream”指令定義的後端主機清單中選取一台主機。 nginx先使用負載平衡模組找到一台主機,再使用upstream模組實現與這台主機的互動。

負載平衡配置:

upstream php-upstream {
    ip_hash;

    server 192.168.0.1;
    server 192.168.0.2;
}

location / {
    root   html;
    index  index.html index.htm;
    proxy_pass http://php-upstream;
}
登入後複製

此範例定義了一個 php-upstream 的負載平衡配置,透過 proxy_pass 反向代理指令套用這個配置。這裡用的 ip_hash 演算法,負載平衡的演算法有多種,就不一一列舉了。

負載平衡也可以用在 fastcgi_pass 上。

如:

fastcgi_pass http://php-upstream
登入後複製

問題

#反向代理程式與負載平衡是什麼關係

反向代理和負載平衡這兩個詞經常出現在一起,但他們實際上是不同的概念,負載平衡它更多的是強調的是一種演算法或策略,將請求分佈到不同的機器上,因此實際上也起到了反向代理的作用。

proxy_pass 和 fastcgi_pass 的區別

一個是反向代理模組,一個是轉送給 factcgi 後端處理。

淺談PHP-FPM、Nginx和FastCGI間的關係

推薦學習:《PHP影片教學

以上是淺談PHP-FPM、Nginx和FastCGI間的關係的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:juejin.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板