亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Nginx+PHP+FastCGI加速模式怎么實現

發布時間:2022-03-14 16:51:10 來源:億速云 閱讀:134 作者:iii 欄目:web開發

本篇內容介紹了“Nginx+PHP+FastCGI加速模式怎么實現”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、用戶對動態PHP網頁訪問過程

用戶瀏覽器發起對網頁的訪問:http://192.168.1.103/index.php

用戶和nginx服務器進行三次握手進行TCP連接(忽略包括nginx訪問控制策略、nginx防火墻等訪問控制策略)

第一步:用戶將http請求發送給nginx服務器

第二步:nginx會根據用戶訪問的URI和后綴對請求進行判斷

1.例如用戶訪問的index.php,nginx則會根據配置文件中的location進行匹配,例如:

[email protected]:/data/web# cat /etc/nginx/conf.d/blog.conf  server {     root /data/web/blog/;     index index.html index.htm;     server_name www.fwait.com;     location / {         try_files $uri $uri/ /index.html;     }     location /blog/ {         #alias /usr/share/doc/;         auth_basic "authorized users only";         auth_basic_user_file /etc/nginx/passwd.conf;         #autoindex on;         allow 192.168.1.103;         deny all;     }     location ~ \.php$ {         include /etc/nginx/fastcgi_params;         fastcgi_intercept_errors on;         fastcgi_pass 127.0.0.1:9000;     } }

用戶訪問的是index.php,則會匹配到location ~ \.php$,這個的含義是對用戶通過URI訪問的資源進行區分大小的匹配,并且訪問的資源是以.php結尾的。

nginx根據用戶請求的資源匹配到具體的location后,會執行location對應的動作,location中動作的含義是:

include /etc/nginx/fastcgi_params; #表示nginx會調用fastcgi這個接口

fastcgi_intercept_errors on; #表示開啟fastcgi的中斷和錯誤信息記錄

fastcgi_pass 127.0.0.1:9000; # 表示nginx通過fastcgi_pass將用戶請求的資源發給127.0.0.1:9000進行解析,這里的nginx和php腳本解析服務器是在同一臺機器上,所以127.0.0.1:9000表示的就是本地的php腳本解析服務器。

根據nginx服務器的配置,可以看出,用戶訪問的是動態的php資源,nginx會調用php相關腳本解析程序對用戶訪問的資源進行解析。

第三步:通過第二步可以看出,用戶請求的是動態內容,nginx會將請求交給fastcgi客戶端,通過fastcgi_pass將用戶的請求發送給php-fpm

如果用戶訪問的是靜態資源呢,那就簡單了,nginx直接將用戶請求的靜態資源返回給用戶。

第四步:fastcgi_pass將動態資源交給php-fpm后,php-fpm會將資源轉給php腳本解析服務器的wrapper

Nginx+PHP+FastCGI加速模式怎么實現

 Nginx+PHP+FastCGI加速模式怎么實現

第五步:wrapper收到php-fpm轉過來的請求后,wrapper會生成一個新的線程調用php動態程序解析服務器

如果用戶請求的是需要讀取例如MySQL數據庫等,將會觸發讀庫操作;

如果用戶請求的是如圖片/附件等,PHP會觸發一次查詢后端存儲服務器如通過NFS進行存儲的存儲集群;

第六步:php會將查詢到的結果返回給nginx

第七步:nginx構造一個響應報文將結果返回給用戶

這只是nginx的其中一種,用戶請求的和返回用戶請求結果是異步進行,即為用戶請求的資源在nginx中做了一次中轉,nginx可以同步,即為解析出來的資源,服務器直接將資源返回給用戶,不用在nginx中做一次中轉。

二、相關疑問

1.是不是每次用戶對動態資源的請求都需要觸發一次完整的動態資源解析過程?

不是,可以有兩種方法解決這個問題:

第一,啟用nginx本身具備的緩存功能,將動態資源解析結果緩存起來,下次用戶進行對應資源訪問時,nginx進行本次緩存查詢,如果查詢成功,則直接動態資源被解析后的靜態資源返回給用戶;

第二,在nginx后端部署緩存機器,如部署varnish緩存集群,對資源進行緩存,用戶請求的資源,可以先在緩存集群上進行查找;

2.用nginx做緩存是否可行?看實際情況,如果在整個web架構中,nginx不是瓶頸的前提下,nginx可以用來做緩存,但是不建議這么做,因為nginx是用戶請求和應答用戶請求的必經之路,如果nginx出現了瓶頸,后端的其他如存儲集群等性能再好也沒用,所以在實際的部署中,不建議啟用nginx的緩存功能(在將nginx作為http server的情況下)。因為啟用nginx緩存功能,一是會降低nginx性能,二是會消耗部署nginx的對應服務器的硬件資源。

3.如果用一張圖表示nginx fastcgi wrapper php之間的關系

Nginx+PHP+FastCGI加速模式怎么實現

4.fastcgi具體是個什么東西

CGI全稱通用網關接口 Commmon Gateway Interface

用于HTTP服務上的程序服務通信交流的一種工具,CGI程序須運行在網絡服務器上。

傳統CGI接口方式性能較差,由于每次HTTP服務器遇到動態程序需要重啟解析器來執行解析,然后結果被返回給HTTP服務器。這在處理高并發時,幾乎是不可能的,因此誕生了FastCGI。另外傳統的CGI接口方式安全性也很差

一個可伸縮地。高速地在HTTP服務器和動態腳本語言間通信的接口

接口在linux下是socket(這個socket可以是文件socket也可以是ip socket)

主要優點把動態語言和HTTP服務器分離開來。多數流行的HTTP服務器都支持FsatCGI包括Apache/Nginx/lighttpd等

支持語言比較流行的是PHP,接口方式采用C/S架構,可以將HTTP服務器和腳本解析器分開,同時在腳本解析服務器上啟動一個或者多個腳本解析守護進程。

當HTTP服務器每次遇到動態程序時,可以將其直接交付給FastCGI進程來執行,然后將得到的結果返回給瀏覽器。這種方式可以讓HTTP服務器專一地處理靜態請求或者將動態腳本服務器的結果返回給客戶端,這在很大程度上提高了整個應用系統的性能。

5.具體的nginx + php的nginx相關配置

[email protected]:/data/web# cat /etc/nginx/nginx.conf|egrep -v "#|^$" user www-data; worker_processes 4; pid /var/run/nginx.pid; events {     worker_connections 768; } http {     sendfile on;     tcp_nopush on;     tcp_nodelay on;     keepalive_timeout 65;     types_hash_max_size 2048;     include /etc/nginx/mime.types;     default_type application/octet-stream;     access_log /var/log/nginx/access.log;     error_log /var/log/nginx/error.log;     gzip on;     gzip_disable "msie6";     include /etc/nginx/conf.d/*.conf;     include /etc/nginx/sites-enabled/*; } [email protected]:/data/web#
[email protected]:/data/web# cat /etc/nginx/conf.d/blog.conf server {     root /data/web/blog/;     index index.html index.htm;     server_name www.fwait.com;     location / {         try_files $uri $uri/ /index.html;     }     location /blog/ {         #alias /usr/share/doc/;         auth_basic "authorized users only";         auth_basic_user_file /etc/nginx/passwd.conf;         #autoindex on;         allow 192.168.1.103;         deny all;     }     location ~ \.php$ {         #include /usr/local/etc/nginx/fastcgi.conf;         include /etc/nginx/fastcgi_params;         fastcgi_intercept_errors on;         fastcgi_pass 127.0.0.1:9000;     } } [email protected]:/data/web#

“Nginx+PHP+FastCGI加速模式怎么實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

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

AI

探索| 舞钢市| 汉阴县| 屏东县| 龙胜| 阿图什市| 新宁县| 厦门市| 阿拉善右旗| 德安县| 博野县| 南华县| 济阳县| 合水县| 历史| 金平| 龙南县| 平远县| 江川县| 徐水县| 开原市| 德令哈市| 讷河市| 辽源市| 马鞍山市| 吉水县| 常山县| 磐安县| 林西县| 伊通| 高州市| 胶南市| 教育| 镇平县| 公主岭市| 元江| 肇庆市| 凤山市| 长岛县| 永川市| 额济纳旗|