Nginx基本服务与upstream配置详解

Nginx (“engine x”) 是一个高性能的HTTP 和反向代理 服务器,在大负载的情况下表现十分优秀。本文简单介绍一下安装、web服务和反向代理服务配置方法。


1. 安装ngnix

2. nginx常用命令

(1). 启动时指定配置文件
nginx -c /opt/nginx/1.6.2/conf/nginx.conf
(2). 运行时重载配置文件
当nginx主进程接收到重载配置文件的命令后,它会先检查新配置文件的合法性,然后将该配置文件应用。然后,主进程会启动一个新的工作进程,并发送关闭请求给旧的工作进程。旧的工作进程接收到关闭请求后,会停止接受新的连接,并继续服务旧的连接请求直到所有的请求完成后才退出。
nginx -s reload
(3). 运行时快速关闭nginx
nginx -s stop
(4). 运行时优雅关闭nginx
所有的工作进程会停止接受新的连接,并继续服务旧的连接请求直到所有的请求完成后才退出。
nginx -s quit
(5). 运行时重新打开日志文件
ngnix -s reopen
(6). 测试配置文件

(7). 查看nginx版本

3. 配置静态内容

在debugo03和debugo04上,打开配置文件,修改下面的内容

其中,启动了一个worker进程,一般情况下纯nginx的服务器可以将这个值配置为。在作为web服务器的情况下,nginx最大连接数为worker_connections * worker_processes.
listen监听本地所有地址端口80,也可以指定listen 192.168.111.10:80监听到某一地址上。
server_name指令主要用于配置基于名称的虚拟主机。支持通配符*(例如*.domain.com)或正则表达式(例如~^(?.+)\.domain\.com$)。参考关于Nginx的server_name
location / 指的是URL中“/”路径为下面的配置内容。包括该URL位置的root目录,并在该目录下依次寻找 index.html index.htm两个索引文件。一般的静态站点可以配置多个location,例如:

这里我们在debugo03和debugo04中“/”的index.html中配置一个简单的文本,仅包含主机名,用于后面的负载均衡测试。

4. 配置ngnix负载均衡

debugo01和debugo02作为两台负载均衡服务器,debugo03和debugo04作为两台web server
下面打开配置文件

测试如下,验证了轮询算法+权重的有效性。可以根据机器性能和目标设置不同的权重。

除了轮询和权重轮询以外,还包括下面三种算法:
IP Hash : 需要在upstream的配置中指定“ip_hash;”,每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
fair:需要在upstream的配置中指定“fair;”按后端服务器的响应时间来分配请求,响应时间短的优先分配。
URL hash:需要在upstream中配置指定:“hash $request_uri; hash_method crc32;”按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
另外,在nignx中可以为每个 backend server 指定最大的重试次数和重试时间间隔。所使用的关键字是 max_fails 和 fail_timeout。而backup指的是仅当其他serverdown或者忙时才会请求这台server。例如:

^^

Posted in Ops, Tools.