一 基本概念
Nginx——Ngine X,是一款自由的、开源的、高性能HTTP服务器和反向代理服务器;也是一个IMAP、POP3、SMTP代理服务器;也就是说Nginx本身就可以托管网站(类似于Tomcat一样),进行Http服务处理,也可以作为反向代理服务器使用。
其实最直接的用处就是作为负载均衡器,虽然目前Nginx的份额在市场上只占很少部分,但是其高性能和低消耗内存的结构,使得其越来越普遍,典型的一个应用就是我们可以使用Nginx作为反向代理进行网站的负载均衡器。
二 特点
跨平台:可以在大多数Unix like 系统编译运行。而且也有Windows的移植版本
2. 配置异常简单:非常的简单,易上手
3. 非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能支持5万并发连接,实际生产中能跑2~3万并发连接数(得益于Nginx采用了最新的epoll事件处理模型(消息队列)。
4 Nginx代理和后端Web服务器间无需长连接
5 Nginx接收用户请求是异步的,即先将用户请求全部接收下来,再一次性发送到后端Web服务器,极大减轻后端Web服务器的压力
发送响应报文时,是边接收来自后端Web服务器的数据,边发送给客户端
6 网络依赖性低,理论上只要能够ping通就可以实施负载均衡,而且可以有效区分内网、外网流量
7 支持内置服务器检测。Nginx能够根据应用服务器处理页面返回的状态码、超时信息等检测服务器是否出现故障,并及时返回错误的请求重新提交到其它节点上。
8 采用Master/worker多进程工作模式
9 此外还有内存消耗小、成本低廉(比F5硬件负载均衡器廉价太多)、节省带宽、稳定性高等特点
三 linux下载和安装
1. Nginx下载
1)pcre
http://www.pcre.org/ 2)nginx
http://nginx.org/
2.1 安装前的准备
1)准备 pcre-8.12.tar.gz。该文件为正则表达式库。让nginx支持rewrite需要安装这个库。
2) 准备 nginx-1.5.0.tar.gz。该文件为nginx的linux版本安装文件。
3)确保进行了安装了linux常用必备支持库
2.2 正则表达式库安装
1)确保进行了安装了linux常用必备支持库。检查是否安装了g++、gcc。rpm -qa | grep gcc 之后需要出现3个包如下图所示。如果没有出现。需要安装g++、gcc。
# yum install gcc-c++
2) 上传pcre-8.12.tar.gz, nginx-1.5.0.tar.gz 到 /usr/local/src/nginx目录下。
3)解压pcre-8.12.tar.gz
# cd /usr/local/src/nginx
# tar zxvf pcre-8.12.tar.gz
4)进入解压后的目录
# cd pcre-8.12
5)配置
# ./configure
6) 编译
# make
7) 安装
# make install
2.3Nginx安装
0) 创建用户nginx使用的www用户。
# groupadd www #添加www组
# useradd -g www www -s /bin/false #创建nginx运行账户www并加入到www组,不允许www用户直接登录系统
1).创建安装目录与日志目录
a) 安装目录
# mkdir /usr/local/nginx
b) 日志目录
# mkdir /data0/logs/nginx
# chown www:www /data0/logs/nginx -R
2 ) 判断系统是否安装了zlib-devel。如果没有安装。使用
# yum install -y zlib-devel
)解压
# cd /usr/local/src/nginx
# tar zxvf nginx-1.5.0.tar.gz
4 ) 进入目录
# cd nginx-1.5.0
5 ) 配置。通常将软件安装在/usr/local/目录下。
# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module
注意:有的linux机器在此处配置可能会报错 ,错误信息和openssl有关,也可能是没有识别pcre正则,则安装openssl 和pcre
#yum -y install openssl openssl-devel
# yum -y install pcre-devel
6 )编译
# make
7 ) 安装
# make install
) 检查是否安装成功
# cd /usr/local/nginx/sbin
# ./nginx -t
结果显示:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
2.4 配置防火墙80端口
#修改防火墙配置:
# vi + /etc/sysconfig/iptables
#添加配置项
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
#重启防火墙
# service iptables restart
2.5 上传配置文件
1)上传nginx.conf (文件下载地址见上面的Linux公社资源站)
# cd /usr/local/nginx/conf
# rz nginx.conf
2) 上传fastcgi_params.phis
# rz fastcgi_params.phis
2.6 启动停止重启与测试
1)启动
#方法1
# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#方法2
# cd /usr/local/nginx/sbin
# ./nginx
2) 停止
#查询nginx主进程号
ps -ef | grep nginx
#停止进程
kill -QUIT 主进程号
#快速停止
kill -TERM 主进程号
#强制停止
pkill -9 nginx
3) 重启(首次启动需:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf)
/usr/local/nginx/sbin/nginx -s reload
4)测试
#测试端口
netstat -na | grep 80
#浏览器中测试
http://ip:80
四 Nginx 核心配置文件 Nginx.conf配置如下(这里只进行了简单的配置,实际生产环境可以进行更详细完善配置):
[html] view plaincopy1. worker_processes 1;#工作进程的个数,一般与计算机的cpu核数一致
2.
3. events {
4. worker_connections 1024;#单个进程最大连接数(最大连接数=连接数*进程数)
5. }
6.
7. http {
8. include mime.types; #文件扩展名与文件类型映射表
9. default_type application/octet-stream;#默认文件类型
10.
11. sendfile on;#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
12.
13. keepalive_timeout 65; #长连接超时时间,单位是秒
14.
15. gzip on;#启用Gizp压缩 proxy_send_timeout 5s; #####nginx超时时间,处理客户端发过来请求如果超出改时间,则会超时 proxy_read_timeout 5s; #####nginx超时时间,处理客户端发过来请求如果超出改时间,则会超时16.
17. #服务器的集群
18. upstream netitcast.com { #服务器集群名字
19. server 127.0.0.1:18080 weight=1;#服务器配置 weight是权重的意思,权重越大,分配的概率越大。
20. server 127.0.0.1:28080 weight=2;
21. }
22.
23. #当前的Nginx的配置
24. server {
25. listen 80;#监听80端口,可以改成其他端口
26. server_name localhost;############## 当前服务的域名
27.
28. location / {
29. proxy_pass http://netitcast.com;
30. proxy_redirect default;
31. }
32.
33.
34. error_page 500 502 503 504 /50x.html;
35. location = /50x.html {
36. root html;
37. }
38. }
39. }