Nginx的安装与详细配置


本文主要针对Nginx的安装与详细配置介绍

 注意:有些配置如果有web底子 应该好理解 如 请求头 超时时间 等
  这些都是http协议里的基本知识,当然没有也没关系
  本配置 只能供学习使用,如果是生产环境还需要根据自己的情况 修改配置
1. 安装Nginx所需要的pcre-devel库
 tar -xvf pcre-8.02.tar.gz
 cd pcre-8.02
 make && make install

cd /lib64

ln -s libpcre.so.0.0.1 libpcre.so.1

如果不做这个链接的话 启动nginx会报错 就是找不到这个libpcre.so.1

2. 安装Nginx-1.2.5
 tar -xvf nginx-1.2.5.tar.gz
 cd nginx-1.2.5
 ./configure --prefix=/usr/local/nginx \ 
 指定nginx的安装目录
       --with-http_stub_status_module \  启用nginx的status功能,可以监控nginx当前状态
       --with-http_gzip_static_module \  支持在线实时压缩输出数据流
       --with-google_perftools_module \  支持TCMalloc对Nginx性能的优化
 make && make install

这里安装了TCMalloc模块来对Nginx优化 所以要先安装这个开源工具,请看:

http://yanzhe.blog.51cto.com/blog/5279577/1182055

安装完成后,再回头来编译。

3. 配置Nginx 详细介绍
 修改Nginx安装目录的conf/nginx.conf 文件
 vi /usr/local/nginx/conf/nginx.conf

  3.1 Nginx的全局配置
 user nobody nobody; 指定了Nginx Worker进程运行用户及用户组,此处是默认值
 worker_processes 4;  指定了Nginx开启的进程数,如果多核CPU,就设置与CPU的核心数量一样多
 error_log logs/error.log notice; 定义了全局错误日志 级别为notice
 pid    logs/nginx.pid; 指定了nginx进程id存储文件的位置
 worker_rlimit_nofile 65535;  用于绑定worker进程和CPU
 events{   用来设定Nginx的工作模式以及连接数上限
  use epoll;  Nginx的工作模式,对于linux系统 epoll模式为首选
  worker_connections 60000; 每个进程的最大连接数  下面公式:
  }    max_clients=processes*connections 
      最大连接数=进程数*每个进程最大连接数
      在作为反向代理时  还要除以4
 进程的最大连接数受linux系统进程的最大打开文件数限制,在执行操作系统命令ulimit -n 60000 后
 worker_connections的设置才能生效。

  3.2 Nginx对HTTP服务器相关属性配置
 http{
 include conf/mime.types;
 default_type application/octet-stream;
 log_format main '$remote_addr - $remote_user [$time_local] '
  '"$request" $status $bytes_sent '
  '"$http_referer" "$http_user_agent" '
  '"$gzip_ratio"';
 log_format download '$remote_addr - $remote_user [$time_local] '
  '"$request" $status $bytes_sent '
  '"$http_referer" "$http_user_agent" '
  '"$http_range" "$sent_http_content_range"';
 client_max_body_size  20m;
 client_header_buffer_size 32k;
 large_client_header_buffers  4 64k;
 sendfile on;
 tcp_nopush on;
 tcp_nodelay on;
 keepalive_timeout 60;
 client_header_timeout 10;
 client_body_timeout 10; 
 send_timeout  10;
 }
 下面详细介一下以上配置的意思:
 include    将外部的文件引入,减少主配置文件的复杂度
 default_type  默认类型为二进制流
 log_format   指定了Nginx日志的输出格式
 client_max_body_size 允许客户端请求的最大的单个文件字节数
 client_header_buffer_size 客户端请求头headerbuffer大小
 large_client_header_buffers 客户端请求中较大的消息头的 个数 与 大小
 sendfile 开启了高效文件传输模式
 tcp_nopush 设置为on 防止网络阻塞
 tcp_nodelay 设置为on 防止网络阻塞
 keepalive_timeout 客户端连接保持活动的超时时间 超时后服务器关闭连接
 client_header_timeout 客户端请求头超时时间 超时后Nginx返回Request time out(408)错误
 client_body_timeout 客户端请求主体超时时间 超时后Nginx返回Request time out(408)错误
 send_timeout 两个连接活动之间的时间,如果超过这个时间客户端没任何活动,Nginx将会关闭连接

  3.3 HTTP GZIP模块配置
 gzip on;
 gzip_min_length 1k;
 gzip_buffers  4 16k;
 gzip_http_version 1.1;
 gzip_comp_level 2;
 gzip_types  text/plain application/x-javascript text/css application/xml;
 gzip_very on;
 下面详细介绍一下以上配置的意思:
 gzip  设置开启gzip压缩,实时压缩输出数据流
 gzip_min_length  允许压缩的页面最小值,页面字节数从header头的Content-Length中获取
      建议设置成大于1K的字节数,小于1K可能会越压缩越大
 gzip_buffers 申请 4个 单位 为16k的内存作为压缩结果流缓存
 gzip_http_version 设置识别HTTP协议版本 默认1.1  几乎所有浏览器都支持gzip压缩
 gzip_comp_level 指定gzip的压缩比例 数值越小 压缩比越小 处理速度也快,反之越慢 也消耗CPU
 gzip_types  用来指定压缩的类型
 gzip_vary 开启前段的缓存服务器缓存经过gzip压缩的页面

  3.4 负载均衡配置
 upstream tomcats{
 ip_hash;
 server 192.168.1.100:8080;
 server 192.168.1.101:8080 down;
 server 192.168.1.102:8080 max_fails=3 fail_timeout=20s;
 }
 下面详细介绍一下以上配置的意思:
 Nginx的负载均衡模块目前支持4种调度算法,其中 后两项属于第三方调度算法

 轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端有宕机,系统将自动剔除,不影响
  Weight 指定轮询的权值,Weight值越大 分配到的访问几率越高,应用于后端服务器性能不均的情况
 ip_hash    来自同一个IP的访客将固定访问一个服务器,解决了动态网页存在session的问题

 fair   根据页面大小和加载时间长短进行负载均衡,Nginx本身不支持fair,需要下载upstream_fair模块

 url_hash  每个URL定向到同一个服务器,可以进一步提高缓存服务器的效率 也必须安装Nginx的hash软件包

 负载均衡调度中的状态:
 down,表示当前的server暂时不参与负载均衡
 backup,预留备份机器,其他所有的非backup机器出现故障或者繁忙的时候,才会请求backup机器
 max_fails 允许请求失败的次数   超过最大次数,返回proxy_next_upstream
 fail_timeout 经理了max_fails次数失败后,暂停服务的时间  两个状态可以一起用

 注意:在ip_hash调度时,负载均衡调度状态不能是weight 和backup

  3.5 server虚拟主机的配置
 server{
 listen 8080;  端口根据自己后端服务器情况而定 可以是80(apache或者nginx),8080(tomcat或者resin)
    也可以自定义 因为服务端口可以修改
 server_name 192.168.1.100  
www.abc.com;  可以是IP  也可以通过域名
 index  index.html  index.htm  index.jsp;   设定访问默认首页的地址
 root /www/abc 虚拟机的网页根目录
 charset gb2312; 用于设置网页的编码格式  
 access_log logs/abc.access.log main;   访问日志存放路径  用main指定输出格式
 }

  3.6 URL 匹配的详细配置

 location 支持正则表达式,也支持条件判断,用户可以通过location实现动静态分离
 所有静态文件(html jpg)等都留下来自己处理  所有jsp动态文件交予tomcat处理

 所有扩展名为.gif、.jpg、.png、,swf的静态文件都交给Nginx处理 
 location ~ .*\.(gif|jpg|png|swf)$ {
   root /web/abc;  网站根目录
   expires 30d;    指定静态文件的过期时间 这里是30天
  }

 将网站根目录下的 upload目录 和 html目录 下的所有文件都交给nginx处理
 location ~ ^/(upload|html)/ {
   root /web/abc;  网站根目录
   expires 30d;    指定静态文件的过期时间 这里是30天
  }

 将虚拟主机下的所有.jsp后缀名的文件都交给本机的8080端口处理
 location ~ .*.jsp$ {
   index index.jsp;
   proxy_pass 
http://localhost:8080;
  }

  3.7 错误信息返回页面配置
 error_page 404 /404.html;
 error_page 500 502 503 504 /50x.html;
 location =  /50x.html {
    root html;  指定 返回错误后 从哪找错误页面
   }

你可能感兴趣的:(tomcat,nginx,负载均衡,代理服务)