真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

nginx和Apache服務(wù)器是如何解析php文件的?

眾所周知,常用的跟php搭配的web server 有兩個(gè),apache 和nginx,編譯完server之后需要配置下才可以正常解析php文件。下面我們來(lái)看下兩種服務(wù)器是如何解析php文件。

成都創(chuàng)新互聯(lián)專注于企業(yè)營(yíng)銷型網(wǎng)站、網(wǎng)站重做改版、興隆臺(tái)網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、成都做商城網(wǎng)站、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為興隆臺(tái)等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

Nginx

一、主流的nginx+php的運(yùn)行原理如下:

1、nginx的worker進(jìn)程直接管理每一個(gè)請(qǐng)求到nginx的網(wǎng)絡(luò)請(qǐng)求。

2、對(duì)于php而言,由于在整個(gè)網(wǎng)絡(luò)請(qǐng)求的過(guò)程中php是一個(gè)cgi程序的角色,所以采用名為php-fpm的進(jìn)程管理程序來(lái)對(duì)這些被請(qǐng)求的php程序進(jìn)行管理。php-fpm程序也如同nginx一樣,需要監(jiān)聽(tīng)端口,并且有master和worker進(jìn)程。worker進(jìn)程直接管理每一個(gè)php進(jìn)程。

3、關(guān)于fastcgi:fastcgi是一種進(jìn)程管理器,管理cgi進(jìn)程。市面上有多種實(shí)現(xiàn)了fastcgi功能的進(jìn)程管理器,php-fpm就是其中的一種。再提一點(diǎn),php-fpm作為一種fast-cgi進(jìn)程管理服務(wù),會(huì)監(jiān)聽(tīng)端口,一般默認(rèn)監(jiān)聽(tīng)9000端口,并且是監(jiān)聽(tīng)本機(jī),也就是只接收來(lái)自本機(jī)的端口請(qǐng)求,所以我們通常輸入命令netstat -nlpt|grep php-fpm 會(huì)得到:

tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1078/php-fpm

4、關(guān)于fastcgi的配置文件,目前fastcgi的配置文件一般放在nginx.conf同級(jí)目錄下,配置文件形式,一般有兩種:fastcgi.conf 和 fastcgi_params。不同的nginx版本會(huì)有不同的配置文件,這兩個(gè)配置文件有一個(gè)非常重要的區(qū)別:fastcgi_parames文件中缺少下列配置:fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

我們可以打開(kāi)fastcgi_parames文件加上上述行,也可以在要使用配置的地方動(dòng)態(tài)添加。使得該配置生效。

5、當(dāng)需要處理php請(qǐng)求時(shí),nginx的worker進(jìn)程會(huì)將請(qǐng)求移交給php-fpm的worker進(jìn)程進(jìn)行處理,也就是最開(kāi)頭所說(shuō)的nginx調(diào)用了php,其實(shí)嚴(yán)格得講是nginx間接調(diào)用php。

二、nginx 配置

來(lái)看一個(gè)host的簡(jiǎn)單配置:

server {
    listen       80;
    server_name  example.com;
    location ~ \.php?.*$ {
        root           /home/mark/www;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

1、第一個(gè)大括號(hào) server{ }不必多說(shuō),代表一個(gè)獨(dú)立的server

2、listen 80代表該server監(jiān)聽(tīng)8011端口

3、location ~ \.php?.*${ }代表一個(gè)能匹配對(duì)應(yīng)uri的location,用于匹配一類uri,并對(duì)所匹配的uri請(qǐng)求做自定義的邏輯、配置。這里的location,匹配了所有帶.php的uri請(qǐng)到該location內(nèi)的uri請(qǐng)求看做是cgi程序,并將請(qǐng)求發(fā)送到9000端口,交由php-fpm處理。

6、fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 動(dòng)態(tài)添加了一行fastcgi配置,配置內(nèi)容為SCRIPT_FILENAME,告知管理進(jìn)程,cgi腳本名稱。由于我的nginx中只有fastcgi_params文件,沒(méi)有fastcgi.conf文件,所以要使php-fpm知道SCRIPT_FILENAME的具體值,就必須要?jiǎng)討B(tài)的添加這行配置。

7、include fastcgi_params 引入fastcgi配置文件

以上就是最簡(jiǎn)潔版的nginx啟動(dòng)php腳本的最簡(jiǎn)配置,當(dāng)重啟nginx之后,在/home/mark/www目錄下創(chuàng)建一個(gè)hello.php文件,輸入保存,然后在瀏覽器中訪問(wèn)localhost/hello.php就可以在網(wǎng)頁(yè)上顯示hello world了。

Apache

相比nginx ,apache 配置fastcgi稍微麻煩些,SetHandler/ProxyPassMatch/ProxyPass/Mod_Rewrite 都可以做到,這里我們只說(shuō)官方推薦的ProxyPassMatch方法。

加載代理模塊

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

配置虛擬主機(jī)支持


    DocumentRoot "/home/mark/www"
    ServerName test.com
    DirectoryIndex /index.php index.php
    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/home/mark/www/$1  
  
    Options none
    AllowOverride All
    Require all granted
  

以上就是使用 FastCGI 模式運(yùn)行 PHP7 教程的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!


文章名稱:nginx和Apache服務(wù)器是如何解析php文件的?
本文路徑:http://weahome.cn/article/ieeghd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部