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...?〉忘了“?〉”。
仔细检查下代码。