一 基本概念

     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++




nginx 安装check module_Nginx



 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



nginx 安装check module_nginx_02



)解压
 

# 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.	}