Nginx负载均衡:分布式Web Server的搭建

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,中国大陆使用nginx网站用户有:新浪、网易、腾讯等。

Nginx 是一个很强大的高性能Web和反向代理服务器,它具有很多非常优越的特性,在高连接并发的情况下,Nginx是Apache服务器不错的替代品,Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应。

在一些大型的项目中,Nginx经常是用作的负载均衡的,Nginx将请求按照一定的规律分发给分布式的Web Server,这样可以解决Web Server是项目性能瓶颈的问题,这样便构成了LNMPA架构,即Linux+Nginx+Mysql+PHP+Apache,有同样功能的还有LVS,但是各有优缺点,最好的是F5硬件,但是价格非常昂贵;同时Nginx也非常适合处理静态页面,文件上传与下载的服务器,在这些业务上,,其他服务器软件是无法比拟的;其实现在有很多项目就直接用Nginx作Web 服务器,Nginx做Web 服务器在处理PHP业务逻辑上可以没有Apache那么强大,假如单独用Nginx不能满足您项目的需要,那就把业务分离开,Nginx做负载均衡,处理静态页,负责文件上传下载,PHP业务逻辑交给Apache。

Nginx最好安装在Linux系统上,因为在Linux下可以让Nginx达到预期的性能,的安装方法可以参见:

反向代理与负载均衡配置:

Web Server1: 192.168.1.16:80 Nginx

Web Server2: 192.168.1.16:8080 Nginx

临 时 域 名: yii.nginx.com

Nginx Server: 192.168.1.18:80

本地只有两台机器,所以Web Server就都放在192.168.1.16上了,到真实环境下,配置类似,真实环境下只是Web Server的IP不同,PHP程序相同,这里为了演示区分,Web Server配置不同的PHP程序。

1.在192.168.1.16 Nginx配置

user www;#运行用户worker_processes 1; #工作进程数量,最好是CPU核心数量events {worker_connections 1024;}http {includemime.types;default_type application/octet-stream;charset utf-8;#编码,最好指定sendfileon;keepalive_timeout 65;#######################myphp8080.com配置#########################  server{listen8080;#监听8080端口server_name myphp8080.com;root /home/data/web/php/myphp8080.com; #web目录location / {index index.php index.html index.htm;}location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;includefastcgi_params;}}#######################myphp80.com配置#########################server {listen80;server_name myphp80.com root /home/data/web/php/myphp80.com;location / {index index.php index.html index.htm;}location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}} }  2.192.168.1.16 在web目录下分别创建myphp80.com和myphp8080.com目录,各自目录分别创建index.php文件,php代码分别为:

myphp80.com目录中index.php代码:

<?php echo json_encode(['type'=>'200','data'=>'80']);?>

myphp8080目录中index.php代码:

<?php echo json_encode(['type'=>'200','data'=>'8080']);?>

将两个目录权限交给www组www用户:

[root@jhq0113 php]# chown -R www:www myphp80.com/

[root@jhq0113 php]# chown -R www:www myphp8080.com/

然后,重启Nginx服务

[root@jhq0113 php]# service nginx restart

3.防火墙开放80和8080端口,开发方法也是参见Nginx安装方法那篇博客,然后在浏览器中进行访问测试,检查配置是否成功,测试结果如下:

忘掉失败,不过要牢记失败中的教训。

Nginx负载均衡:分布式Web Server的搭建

相关文章:

你感兴趣的文章:

标签云: