Nginx反向代理Apache

星期日 上午 02:15 狂奔的蜗牛 服务器技术 4171 views
0
Comments
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部分中加入: 
代码
  1. location ~ ^(.+\.php)(.*)$ {  
  2.     proxy_redirect off;  
  3.     proxy_set_header HOST $host;  
  4.     proxy_set_header SERVER_ADDR $server_addr;  
  5.     proxy_set_header SERVER_PORT $server_port;  
  6.     proxy_set_header REMOTE_ADDR $remote_addr;  
  7.     proxy_set_header REMOTE_PORT $remote_port;  
  8.     proxy_pass   http://127.0.0.1:8080;  
  9. }  

这就是将.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环境,使用起来也可以随时切换。
Nginx反向代理 2012/05/26 02:15:46
评论(0)
没有评论!

发表评论

引用成功取消引用×

昵称*: 邮箱*: 网址:

最多可输入300字符 验证码*:


Process: 0.056s | DB :17 queries | UseMem:2,280 kb