apachenginxphp
⑴ 為什麼現在還是有很多的網站在用Apache2+php,而不是Nginx+PHP
兩個適用范圍不同
apache+PHP適用於大中型伺服器,資料庫設計比較大的類型以及承載量大的都適用於apache+php體系;
由於很多用戶量大重量型的公司使用其作為標准,逐步也被一些不太懂或者了解的小公司和小用戶所採納,最後成為了行業標准,成為了覆蓋率最廣普及程度最高的伺服器搭配使用軟體,大家都看著別人在用,也不知道為什麼,也跟著去用.
屬於後真相跟風時代.
大部分人並不知道兩個有什麼區別以及其適用范圍有什麼不同.
就像你做視頻,要求不高,可以一個簡單的小軟體做到;也可以用專業的AE等軟體做到.
但很不知道這兩者的區別,看著別人用AE,也跟著去用AE.
殊不知小軟體其實也可以做到,而且安裝和製作都屬於輕量級,既方便快速,而且軟體價格也便宜很多.
這就是後真相跟風時代,很多不懂的用戶推廣了這些需要被區分的軟體的使用和適用范圍問題
⑵ 為什麼nginx只能同時處理一個php,apache環境下可以同時運行
Nginx 的工作原理在這里我就不多贅述了,網上隨便搜一下 Nginx 的工作原理,成百上千的 blog 都在討論講述,可以自己搜一下。
但我可以簡單粗暴地回答一下你的這個問題,這樣也更方便理解。
---- Apache使用線程驅動處理 http 請求:每個連接都會打開一個線程,並在發送響應時關閉線程,釋放其他線程的資源。這就是說,你每發送一個 http 請求,Apache 就會給你分配一個接待員來處理這個請求;你發 10 個請求,就有 10 個接待員,一對一的方式來處理,所以無需等待;
---- Nginx 處理 http 請求使用 Reactor 模式,基本上默認情況下,它是單線程的(但可以分叉幾個進程來利用多個內核)。這就是說,不管你發幾個 http 請求,Nginx 只有一個接待員來處理你的請求,處理完了這個請求才能接著處理下一個請求,所以請求多的時候就需要排隊;
當然,Nginx 的這個處理方式不是死的,可以根據實際情況靈活配置;如果你要深入理解,我在這里簡簡單單也說不清楚,長篇大論的 Blog 網上都有,得慢慢看。
⑶ 我的網站是純php的,用apache好還是nginx好
nginx:
通過 本地回環或 socket 轉發到 php-cgi上, 在windows平台上, php-cgi 很不穩定, 通常需要一個外部程序來守護 php-cgi 進程以防止經常性的崩潰, 特別是 php內部再走socket通訊時(譬如接 redis);
在 linux上, 有 php-fpm 守護 php-cgi, 相對穩定很多;
apache:
重, 但是穩定, 支持的各種擴展;
如果流量巨大, 可考慮 nginx做反向代理, 這點apache無法比.
⑷ NGINX+PHP(FASTCGI)好,還是NGINX+APACHE+PHP好
單機純php環境(linux),越是簡單的組合,理論上是越高率。
nginx + php-fpm 在linux是最高率的,負載最高效的。
而nginx + apache + php,通常是出於某種需求,才這樣組合的。
第一,是你的單機里有多種環境同時環行,如php,java這樣的等,需要nginx +(tomcat,apache)這樣的組合。
第二,通常是反向代理,集群,負載均衡等,可以nginx + (nginx+php )* n 或 nginx + (apache + php) * n
第三,可能php應用開發時,用到了某些apache特性,不能簡單脫離apache
第四,當php應用,通常比較耗時,而且要求對每次請求比較嚴格,一定要成功返回,apache +
mod這種組合,相對可以保證成功返回(超時值可以簡單設定)。而nginx +
php-fpm,優於它專注於高吞吐量,必然對每次請求=》返回,都是優化地處理,輕易處理,對於某些耗時的請求,容易超時(通種是30-60秒的設
定),返回就丟失了。正所謂有得就有失。
⑸ 如何在Apache和Nginx禁止上傳目錄里PHP的執行許可權
網站程序的上傳目錄通常是不需要PHP執行解釋許可權,通過限制目錄的PHP執行許可權可以提網站的安全性,減少被攻擊的機率。
下面和大家一起分享下如何在Apache和Nginx禁止上傳目錄里PHP的執行許可權。
在虛擬主機配置文件中增加php_flag engine off指令即可,配置如下
"/website/uploads">,denyAllowfromallphp_flagengineoff
Nginx更簡單,直接通過location條件匹配定位後進行許可權禁止。
在server配置段中增加如下的配置
如果是單個目錄
location~*^/uploads/.*.(php|php5)${denyall; }
如果是多個目錄
location~*^/(attachments|uploads)/.*.(php|php5)${denyall;}
注意:這段配置文件一定要放在下面配置的前面才可以生效。
location~.php${ fastcgi_pass127.0.0.1:9000; fastcgi_indexindex.php; fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name; includefastcgi_params; }
最後給一個完整的配置示例
location~/mm/(data|uploads|templets)/*.(php)${ denyall; } location~.php${ try_files$uri/404.html; fastcgi_pass127.0.0.1:9000; fastcgi_indexindex.php; fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name; includefastcgi_params; }
配置完後記得重啟Nginx生效。
⑹ apache和nginx的區別
Apache和nginx處理php文件的方式不同,前者通過libphp5.so這個模塊來處理,後者通過php-fpm這個服務來處理,Nginx處理動態請求是弱項,一般動態請求讓Apache去做,Nginx只適處理高並發的靜態
⑺ 為什麼現在還是有很多的網站在用Apache2+PHP,而不是Nginx+PHP
這只是一個歷史積累和習慣問題。本來一個網站運行得好好的何必沒事干換伺服器軟體。nginx初期的優點是高並發和處理靜態頁面。但這還不足以讓那些運行得好好的網站都拋棄酋長apache。
⑻ nginx 不解析php,apache正常。
Parse error一般是語法錯誤。和nginx無關
應該是
使用了開放的標簽,語句沒有結束 比如沒注意 語句結束加 ";" 或者 if(){...} 後面忘了"}" ;〈?php...?〉忘了「?〉」。
仔細檢查下代碼。