1、Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
2、Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
总的来说,负载均衡实现的方式分为软件实现和硬件实现两种,硬件实现运行的效率非常高,但是对应的成本也非常高。软件实现运行效率不如硬件,但是成本相对来说低得多。而使用Nginx服务器实现负载均衡,那么就是通过软件的方式来实现负载均衡,并且Nginx本身支持高并发等。故而使用Nginx服务器实现负载均衡,能大大节约企业的成本,并且由于Nginx是服务器软件,其执行效率也是非常高。本篇的目的也就是帮助大家使用Nginx实现负载均衡。
3、nginx在负载均衡上面效果明显,在集群的部署上面使用非常明确,对于效果图如下:
4、nginx的安装(Linux centos7)
1)下载tar包放在/usr/local下面下载地址:http://nginx.org/en/download.html
2)安装相关依赖和库文件
# yum -y install gcc gcc-c++ autoconf automake //gcc、gcc-c++的库文件 # yum -y install pcre pcre-devel //安装Nginx依赖包 # yum -y install zlib zlib-devel
5、解压nginx.tar.gz包
# tar -zxvf /usr/local/nginx-1.13.0.tar.gz //解压tar包
6、在解压包中运行./configure并安装
# cd /usr/local/nginx-1.13.0/ # ./configure# make # make install //安装
7、启动nginx,停止用ps -ef|grep nginx 自己kill线程
# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
8、因为具体的配置在nginx.conf中,不建议直接在nginx.conf中修改,可以做备份处理
# cp nginx.conf nginx.conf_bak
9、nginx的配置 vi nginx.conf 对比一下代码修改
#设置低权限用户,为了安全而设置的 user nobody; #工作衍生进程数 worker_processes 4; #设置错误文件存放路径 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #设置pid存放路径(pid是控制系统中重要文件) #pid logs/nginx.pid; #设置最大连接数 events{ worker_connections 1024; } http{ #主要是用于设置一组可以在proxy_pass和fastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询 upstream tomcat_client { #设置同一个cookie的两次/多次请求,请求的是同一台服务器 ip_hash; #weight权重,默认1,权重越大访问概率越大,backup备用服务器,服务器全部崩溃后启动 server 192.168.2.21:8080 weight=5; server 192.168.2.22:8080 weight=5; server 192.168.2.23:8080 weight=5 backup; } #开启gzip压缩,开启后,访问网页会自动压缩 #gzip on; #指定服务器的名称和参数 server { listen 80; server_name test.nginxtest.net; #设置字符 #charset koi8-r; #location / 指用根目录做负载均衡 location / { proxy_pass http://tomcat_client; proxy_redirect default; #设置代理 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } }