Nginx负载均衡实战

前面介绍了Nginx搭建flv、mp4流媒体服务器,随着流量的上升,单台服务器已经无法支撑,所以就用到了负载均衡。

系统环境:
Centos 6.5 x86_64
Nginx 1.7.7

均衡负载服务器: 209.141.54.64:80
Web1: 209.141.54.65:80
Web2: 209.141.54.66:80
Web3: 209.141.54.64:8080

Web1 Web2 和 Web3 都是已经搭建好的流媒体服务器,Web3同时做为负载均衡和Web服务器使用,负载均衡使用的端口是80,Web服务使用的是8080端口。

Nginx配置文件示例:

user www www;
worker_processes auto;
error_log /dev/null;
pid /usr/local/nginx/logs/nginx.pid;

events {
    use epoll;
    worker_connections 65535;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    
    access_log off;
    sendfile on;

    keepalive_timeout 65;
    gzip on;
    
    upstream homeway {
        # ip hash主要是对ip处理下,让下次访问时候,还是访问当前服务器,这样就不会导致session丢失
        ip_hash;
        # weight权重,配置访问概率
        server 209.141.54.65:80 weight=10;
        server 209.141.54.66:80 weight=5;
        server 209.141.54.64:8080 weight=5;
    }
    server {
        listen 8080;
        server_name 209.141.54.64;
        index index.html index.htm;
        root /home/html;
        limit_rate_after 10m;
        limit_rate 100k;
        charset utf-8;
        
        location ~ \.flv {
            flv;
            valid_referers none blocked www.2dan.cc; 
              if ($invalid_referer) {
                  return 403;
             }
             expires      365d;
        }

        location ~ \.mp4$ {
                 mp4;
                 valid_referers none blocked www.2dan.cc; 
              if ($invalid_referer) {
                  return 403;
             }
             expires      365d;
        }
    }
    server {
        listen       80;
        server_name  209.141.54.64;
        
        location / {
            proxy_pass http://homeway;
            proxy_redirect off;    
            proxy_set_header Host $host; 
            proxy_set_header Range $http_range;   
            proxy_set_header X-Real-IP $remote_addr;    
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
            client_max_body_size 10m;    
            client_body_buffer_size 128k;    
            proxy_connect_timeout 90;    
            proxy_send_timeout 90;    
            proxy_read_timeout 90;    
            proxy_buffer_size 4k;    
            proxy_buffers 4 32k;    
            proxy_busy_buffers_size 64k;    
            proxy_temp_file_write_size 64k;
        }
    }
}

搞定了,确定WEB1,WEB2,WEB3可以正常访问就行了。

这样,假设,我在WEB1的web目录下放一个 2dan.txt, WEB2不放,那么。当我访问http://209.141.54.64 的时候,多次刷新,有时就会404,有时候返回正常页面,这就表示成功了。

标签:Nginx, 反向代理, 负载均衡

已有 2 条评论

  1. 这个能运用到window平台吗?

    1. 可以的,nginx配置文件是一样的

添加新评论