您的位置:首页 > 运维架构 > 反向代理

Nginx反向代理Apache

2010-08-08 10:32 120 查看
Nginx的并发连接处理能力是远超Apache的,一般都采用Nginx+FastCGI的方式。

在自己的电脑上用Nginx proxy Apache这样的非主流服务器环境一段时间了,感觉还是有点意思。由Nginx处理HTTP请求,将PHP交由后端服务器Apache处理,其余均由Nginx处理。有点负载均衡的意思。

方法很简单,不管是Windows还是Linux,先把Nginx和Apache装好。

修改Apache的httpd.conf文件,将监听端口改为8080(Listen 8080),重启。

修改Nginx的nginx.conf文件。监听端口默认为80即可。在Server部分中加入:
location ~ ^(.+\.php)(.*)$ {
proxy_redirect off;
proxy_set_header HOST $host;
proxy_set_header SERVER_ADDR $server_addr;
proxy_set_header SERVER_PORT $server_port;
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_set_header REMOTE_PORT $remote_port;
proxy_pass http://127.0.0.1:8080;
}

这就是将.php文件交由后端服务器http://127.0.0.1:8080处理。
proxy_set_header是在HTTP头部中发送这些信息,Nginx反向代理Apache时影响REMOTE_ADDR等信息,需要发送真实信息。当然,使用BasicPHP框架将自动重载HTTP_REMOTE_ADDR为REMOTE_ADDR,不影响程序员编写程序。

重启Nginx,就可以正常访问服务器了,相当于把Nginx+FastCGI变成了Nginx+Apache2Handler。依旧可以看看phpinfo,由于Apache是后端服务器,所以看到的HTTP版本为1.0,不要惊讶。

对Nginx proxy Apache与单纯的Apache服务器进行了简单的压力测试,并发连接数超过100时,Nginx proxy Apache的性能就开始超越Apache了。

这样Nginx和Apache的环境在开发时都可以用到,想用FastCGI可以随时修改一下nginx.conf文件,想用Apache直接访问8080端口即可。我也同时保留了PHP5.2和PHP5.3两个PHP环境,使用起来也可以随时切换。 阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: