ngnix配置及实战

来源:互联网 发布:angularjs.min.js下载 编辑:程序博客网 时间:2024/06/05 08:54

先来简单讲一下结构和原理吧:

Nginx由内核和一系列模块组成,内核提供web服务的基本功能,如启用网络协议,创建运行环境,接收和分配客户端请求,处理模块之间的交互。Nginx的各种功能和操作都由模块来实现。Nginx的模块从结构上分为核心模块、基础模块和第三方模块。

  • 核心模块: HTTP模块、EVENT模块和MAIL模块
  • 基础模块: HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块
  • 第三方模块: HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块及用户自己开发的模块

这样的设计使Nginx方便开发和扩展,也正因此才使得Nginx功能如此强大。Nginx的模块默认编译进nginx中,如果需要增加或删除模块,需要重新编译Nginx,这一点不如Apache的动态加载模块方便。如果有需要动态加载模块,可以使用由淘宝网发起的web服务器Tengine,在nginx的基础上增加了很多高级特性,完全兼容Nginx,已被国内很多网站采用。

好吧,又说多了,开始讲点实际的:

#废话少说#安装完nginx后,我们将直接修改etc下面的nginx.conf文件。ngnix以模块的形式管理和配置,下面是常见的模块配置:

1.nginx.conf文件中,Nginx中有少数的几个高级配置在模块部分之上(就是在最上面),暂且成为顶层配置,也可以把每一条配置看成一个模块。


#user:定义ngnix运行的用户或者用户组,我一般设置为root。

#pid:一般不做修改,进程文件

#worker_processes :进程数,可以这样理解,ngnix是以多进程的方式来工作的,就是在接受请求后可以开启多个worker来处理请求,就像多线程一样,并不是worker数量越多处理速度越快,因为内核数或者资源有限,一般设置为内核的数量或者直接auto,auto后ngnix会试着自己匹配。

#全局错误日志定义类型,后面可以跟多个参数[ debug | info | notice | warn | error | crit ],表示输出的哪些级别的信息。
示例:error_log /var/log/nginx/error.log info;


2.events模块中包含nginx中所有处理连接的设置,先看看样子:
  

worker_connections设置可由一个worker进程同时打开的最大连接数。

use epoll:设置多路复用IO算法,linux2.6以上支持。这个是linux比较基础的知识,不懂没关系,好学的可以自己查询理解,
其实就是算法机制选择。
3.http:http服务器配置:也是比较主要的配置,平时我们主要在这里进行配置,http里有很多配置,可以自己问一下度娘,这里主要讲几个在下认为需要重点的,

首先是:upstream,大部分时候我们用ngnix做负载均衡,就是在该配置下配置多个主机。


想想都知道,负载均衡肯定有很多策略,看看niginx的几种策略,一般够用了

nginxupstream目前支持4种方式的分配

1、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
例如:
upstream bakend {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}

3ip_hash
每个请求按访问iphash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
例如:
upstream bakend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}

4fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backend {
server server1;
server server2;
fair;
}

负载均衡先讲这些,现在来讲http的第二个主要主要配置:server(虚拟主机),配置虚拟机,一台服务器可以配置多个server,简单理解,就是配置监听转发规则,先看看常见配置:

补充:
rewrite的用法:

ngx_http_rewrite_module 功能描述:执行 URL 重定向,允许你去掉带有恶意的 URL,包含多个参数(修改).利用正则的匹配,分组和引用,达到目的 配置范例:该模块允许使用正则表达式改变 URL,并且根据变量来转向以及选择配置

location /face {

if ($http_user_agent ~* "xnp") {

rewrite ^(.*)$ http://211.151.188.190:8080/face.jpg redirect;

}


access的用法:此模块提供了一个简易的基于主机的访问控制. ngx_http_access_module 模块使有可能对特定 IP 客户端进行控制. 规则检查按照第一次匹配的顺序,此模块对网络地址有放行和禁止的权利。

location / {
: deny    192.168.1.1;
: allow   192.168.1.0/24;
: allow   10.1.1.0/16;
: deny    all;
}
简单就将这些额,后期会进行一些补充。

关联文章:
http://my.oschina.net/duxuefeng/blog/34880
0 0
原创粉丝点击