91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-05-21 16:23:39 來源:億速云 閱讀:471 作者:鴿子 欄目:編程語言

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

Nginx

一、主流的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:* LISTEN 1078/php-fpm

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 配置

來看一個host的簡單配置:

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、第一個大括號 server{ }不必多說,代表一個獨立的server

2、listen 80代表該server監聽8011端口

3、location ~ \.php?.*${ }代表一個能匹配對應uri的location,用于匹配一類uri,并對所匹配的uri請求做自定義的邏輯、配置。這里的location,匹配了所有帶.php的uri請到該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之后,在/home/mark/www目錄下創建一個hello.php文件,輸入<?php echo "hello world"; ?>保存,然后在瀏覽器中訪問localhost/hello.php就可以在網頁上顯示hello world了。

Apache

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

加載代理模塊

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

配置虛擬主機支持

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

以上就是使用 FastCGI 模式運行 PHP7 教程的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

日土县| 台江县| 博客| 辽阳市| 南涧| 临汾市| 平遥县| 兴海县| 兴业县| 和平县| 延寿县| 龙陵县| 宁化县| 汾阳市| 惠州市| 哈巴河县| 禄丰县| 涟源市| 安多县| 繁峙县| 仪征市| 淮滨县| 吉隆县| 大姚县| 阳城县| 河津市| 司法| 兴海县| 若尔盖县| 花莲县| 澳门| 宜城市| 清丰县| 翁牛特旗| 开原市| 镇沅| 长垣县| 中超| 茂名市| 晋州市| 梧州市|