PHP开发基本上都知道两种运行环境,分别是LNMP和LAMP。区别主要在N和A上,当然从细节上来区分,两个P也有不一样的地方。不谈之前的浅淡理解,最近一个项目上要配合进行PHP服务器指向的切换。发现A服务器上安装了apache,B服务器上安装了nginx,每次请求B服务器的nginx,业务逻辑在A上执行。
这和我之前所了解到的不太一样,一般来说apache和php通过mod_php方式运行,而要是用到nginx,往往就直接用了php-fpm。在一番查看后发现,确实基本apache的mod_php进行PHP解析,通过访问B返回了正确的脚本执行结果,而直接访问了A,发现也得到了正确的结果。区别仅在于ip地址和端口的差别。
打开nginx的配置文件nginx.conf发现类似如下一段信息:
location /papa/ {
proxy_pass http://192.168.3.100/;
}
proxy模块相关配置参数很多,proxy_pass简单来说就是做一遍HTTP请求转发。暂时不去深究为什么用了nginx,又用了apache。个人认为这种方式存在不足之处,nginx一直以来以其静态处理性能强劲闻名(当然现在动态处理能力也很强),通过配置location匹配抓取访问URL指定字段,再转发请求到apache服务器。可以看出来动态和静态请求都全部推给了apache,那么nginx仅仅就是做了个转发,HTTP转发这种事情,总会存在损耗。完全没有利用起来nginx强劲的效果,唯一的好处可能就是做了负载均衡,方便布置集群。
第一想聊聊,基于压测,要求部署两套PHP的执行环境。
location /papa/ {
proxy_pass http://test_common/;
}
upstream test_common {
server 127.0.0.1;
}
proxy_pass 配置转发请求地址,upstream配置多个server地址,且功能真的强大,举几个简单的例子。
普通轮询模式:按照1:1的比例轮询服务