搜尋
首頁頭條nginx+php的設定與原理

採用nginx php作為webserver的架構模式,在現今運用相當廣泛。然而第一步需要實現的是如何讓nginx正確的呼叫php。由於nginx呼叫php並不是如同呼叫一個靜態檔那麼直接簡單,是需要動態執行php腳本。所以涉及到了對nginx.conf檔的配置。這一步對新手而言一般需要網上查資料,對於一般的熟手而言,也有不少同學並沒有搞透徹為何要如此這般配置。本文的主要內容為如何在nginx server中正確設定php呼叫方法,以及設定的基本原理。

一、nginx php運作原理:

首先簡單的講一講原理,目前主流的nginx php的運作原理如下:

1 、nginx的worker程序直接管理每一個請求到nginx的網路請求。

2、對於php而言,由於在整個網路請求的過程中php是一個cgi程式的角色,所以採用名為php-fpm的進程管理程式來對這些被要求的php程式進行管理。 php-fpm程式也如同nginx一樣,需要監聽端口,並且有master和worker進程。 worker行程直接管理每一個php行程。

3、關於fastcgi:fastcgi是一種行程管理器,管理cgi行程。市面上有多種實作了fastcgi功能的進程管理器,php-fpm就是其中的一種。再提一點,php-fpm作為一種fast-cgi進程管理服務,會監聽端口,一般默認監聽9000端口,並且是監聽本機,也就是只接收來自本機的端口請求,所以我們通常輸入命令netstat -nlpt|grep php-fpm 會得到:

tcp        0      0 127.0.0.1:9000              0.0.0.0:           1057/php-fpm

這裡的127.0.0.1:9000 就是監聽本機9000埠的意思。

4、關於fastcgi的設定文件,目前fastcgi的設定檔一般放在nginx.conf同級目錄下,設定檔形式,一般有兩種:fastcgi.conf  和 fastcgi_params。不同的nginx版本會有不同的配置文件,這兩個配置文件有一個非常重要的區別:fastcgi_parames文件中缺少下列配置:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

我們可以開啟fastcgi_parames檔案加上上述行,也可以在要使用設定的地方動態新增。使得該配置生效。

5、當需要處理php請求時,nginx的worker進程會將請求移交給php-fpm的worker進程進行處理,也就是最開頭所說的nginx呼叫了php,其實嚴格得講是nginx間接呼叫php。

了解了上述的五個簡單原理,在nginx中配置php呼叫方法就變得易如反掌。

二、設定檔:

直接貼上程式碼逐行講解,此處貼出一個能正常啟動php腳本的最簡nginx vhost設定:

server {
    listen       8011;
    server_name  test.cn;
    location ~ \.php?.*$ {
        root           /share/test;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

1、第一個大括號server{ }:不必多說,代表一個獨立的server,

2、listen  8011:代表該server監聽8011埠 

# 3、location ~ \.php?.*${ }:代表一個能匹配對應uri的location,用於匹配一類uri,並對所匹配的uri請求做自訂的邏輯、配置。這裡的location,匹配了所有帶有.php的uri請求,例如:http://192.168.244.128:8011/test.php/asdasd  http://192.168.244.128:8011/index.php等

4、root  /share/test:請求資源根目錄,告訴符合到該location下的uri到/share/teset資料夾下去尋找同名資源。

5、fastcgi_pass  127.0.0.1:9000:這行開始是本文的重點:這行程式碼的意思是,將進入到該location內的uri請求看做是cgi程序,並將請求傳送到9000端口,交由php-fpm處理。

6、fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;  :這行設定意思是:動態新增了一行fastcgi配置,設定內容為SCRIPT_FILENAME,告知管理流程,cgi腳本名稱。由於我的nginx中只有fastcgi_params文件,沒有fastcgi.conf文件,所以要讓php-fpm知道SCRIPT_FILENAME的具體值,就必須要動態的添加這行配置。

7、include fastcgi_params; 引入fastcgi設定檔

以上就是最簡潔版的nginx啟動php腳本的最簡配置,當重啟nginx之後,在/share/test目錄下創建一個xx.php文件,輸入保存,然後在瀏覽器中訪問localhost:8011/xx.php 就可以在網頁上顯示hello world了。

三、總結:

其實對於呼叫php這類cgi腳本程序,只要理解了我開頭提到的5點原理,然後結合5-7行配置講解,完全可以較清楚的明白為什麼需要這樣配置了。對於新手而言,往往被fastcgi,php-fpm cgi程式搞得一頭霧水,胡亂配置已通,跑通上線,也不去深究其原理。所以希望寫在這裡的東西能對讀者帶來一點點的幫助。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具