nginx 的三大作用

nginx 的三大作用分别是:http 静态资源服务器与虚拟主机、反向代理、负载均衡。
为什么要使用 nginx 来做http静态资源服务器呢?因为他性能优越,能更好的支持高并发连接,5万个/每秒。

http 静态资源服务器配置 以及虚拟主机

server {
    listen       80;
    server_name  www.wlmqtc.com;
    location / {
        root   html;
        index  index.html index.htm;
    }
}

通常,使用 nginx 作为 http 静态资源服务器时,只需配置 server 段 的三个地方

  1. listen 监听端口
  2. server_name 域名或者IP
  3. location 下的 root 资源所在目录

注意 可以有多个 server 段 ,所以,nginx 也可以用来做虚拟主机

反向代理配置

upstream myhost {
    server 127.0.0.1:8080;
}
server {
    listen       80;
    server_name  www.wlmqtc.com;
    location / {
        proxy_pass  http://myhost;
    }
}

第一个问题, 什么是反向代理? 反向代理是相对于正向代理而言的。正向代理是面向客户端做代理,反向代理就是与之相反,是面向服务

端做代理。

反向代理时候,需要增加一个 upstream 段 ,并为他取一个任意自定义的名字,例如,我为他取名 myhost ,同时指定一台被代理的主机即可


而后,在 location 中,注释或删除掉 root 和 index,
最后,在 location 中,增加一个配置 proxy_pass http://myhost;

经过以上配置后,当客户端访问 http://www.wlmqtc.com 时,反向代理就会到上游主机中寻找资源(此处就是 127.0.0.1:8080 ),最终将资

源返回到客户端。

负载均衡配置

upstream myhost {
    server 127.0.0.1:10080;
    server 127.0.0.1:10010;
    server 127.0.0.1:10086;
    server 127.0.0.1:10087;
}
server {
    listen       80;
    server_name  www.wlmqtc.com;
    location / {
        proxy_pass  http://myhost;
    }
}

负载均衡很简单,当 upstream 段 内包含多个主机时,将会自动启用默认策略(轮询)。

四种负载均衡策略

名称策略适用
轮询默认策略,依次访问所有主机
weight加权策略,值越大被访问几率越大,默认值=1适合各个主机配置差别较大时适用
ip_hashIP区分策略适合有状态服务,如:session
least_conn最少连接策略适合请求处理时间长短不一的情况

几个参数

参数作用默认值
fail_time_out连接超时时间,与 max_fails 配合使用10s
max_fails最大失败次数,超出将被 down 。1s
backup备用主机,当其他主主机不可用时,访问这个
down手动标记主机宕机

max_fails 补充说明: 在一个 fail_time_out 周期内,发生 max_fails 次失败 ,该主机将被标记为 down ,所有请求将不会转发到此

,只有到了下一周期才会重新启用此主机。

参数可以混用

# 多种参数策略可以混用
upstream myhost {
    ip_hash;
    least_conn; 
    server 127.0.0.1:10080 weight=2;
    server 127.0.0.1:10010 backup;
    server 127.0.0.1:10086 max_fails=3 fail_timeout=20;
    server 127.0.0.1:10087 down;
}

其他注意:

ip_hash 策略是根据客户端 IP 分配主机的,每个客户端访问的主机是固定的,所以有一些需要注意的地方

  • ip_hash 策略不能与 backup 同时使用
  • ip_hash 策略必须手动对主机做宕机,即标记 down

标签: nginx

评论已关闭