我总是将 Apache 用于我的PHP项目。但是现在,我想离开它,开始使用以下选项之一:
哪个性能更好?毫无疑问,什么是最好的?你的推荐是哪一个?
好的,所以有一个很酷的东西叫做 nginx。不要停止阅读
很多人没有意识到的一件事是 nginx 可以非常快速且非常高效地执行代理请求。
你可能会问,什么是代理请求?!那么好。
从远程用户到 nginx 的代理请求被接收。Nginx 将接收到该请求,然后将请求转发给另一个侦听器。这个监听器可以是一个 unix 域套接字、Apache、网络上的另一个 nginx 服务器,甚至是内部的 PHP 内置服务器。
就个人而言,听起来您对 PHP-FPM 了解不多,它是一种基于套接字的 PHP 解析器。早在 Apache 的旧时代,人们曾经使用这个叫做mod_php
Apache 会使用共享库手动解析请求的东西。这太可怕了。
如果您因为这个原因打算离开,我建议您升级并通过使用 PHP-FPM 和 Nginx 来提高您的性能。Rackspace 对此有一篇很好的文章:http ://www.rackspace.com/knowledge_center/article/installing-nginx-and-php-fpm-setup-for-nginx
片段:
示例 nginx 配置:
server {
server_name www.DOMAINNAME;
rewrite ^(.*) http://DOMAINNAME$1 permanent;
}
server {
listen 80;
server_name DOMAINNAME;
root /var/www/DOMAINNAME/htdocs;
index index.php;
include /etc/nginx/security;
# Logging --
access_log /var/log/nginx/DOMAINNAME.access.log;
error_log /var/log/nginx/DOMAINNAME.error.log notice;
# serve static files directly
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
access_log off;
expires max;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm/DOMAINNAME.socket;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
}
该location ~ \.php$
路由会将所有 PHP 请求转发到您的 php-fpm 实例。当然,更新您的 nginx 配置以匹配您的套接字名称。
如果您想将它与内置 PHP 服务器一起使用,您可以这样做(假设它在 localhost:8000 上运行):
location ~ \.php$ {
fastcgi_pass http://localhost:8000;
}
这样,您就可以两全其美。(但请记住,内部 PHP 服务器没有经过优化或加固。我建议使用 PHP-FPM。
PHP 的内置网络服务器仅用于开发和测试。这是一个简单的服务器,从未打算处理现实世界的负载。
一个事件驱动的服务器只会增加一堆不必要的复杂性,除非你真的添加了它添加的功能。
它们都不适用于任何严肃或通用的服务器。除非您有具体的理由使用不同的堆栈,否则您应该坚持使用 Apache。它稳定、安全、可配置并且做得非常好。