Nginx反向代理与负载均衡

标签(空格分隔): nginx


1 反向代理:Web服务器的“经纪人”

1.1 反向代理初印象

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

Nginx反向代理与负载均衡_第1张图片
0.jpg

从上图可以看出:反向代理服务器位于网站机房,代理网站Web服务器接收Http请求,对请求进行转发。

1.2 反向代理的作用

1.2.1 保护网站安全:任何来自Internet的请求都必须先经过代理服务器;

Nginx反向代理与负载均衡_第2张图片
1.jpg

1.2.2 通过配置缓存功能加速Web请求:可以缓存真实Web服务器上的某些静态资源,减轻真实Web服务器的负载压力;

Nginx反向代理与负载均衡_第3张图片
2.jpg

1.2.3 实现负载均衡:充当负载均衡服务器均衡地分发请求,平衡集群中各个服务器的负载压力;

Nginx反向代理与负载均衡_第4张图片
3.jpg

2 设定最最简单的负载均衡

2.1 设定两台虚拟服务器

新建文件 192.168.8.200:80,设定虚拟主机

    server { 
        listen 80; 
        server_name  192.168.8.200; 

        #设定本虚拟主机的访问日志 
        access_log   logs/192.168.8.200.log; 
        
      
    } 

新建文件 192.168.8.201:80,设定虚拟主机

server { 
    listen         8080; 
    server_name    192.168.8.201; 
    index          index.html index.htm; 
    root           /var/www/html; 
} 

2.2 配置负载均衡服务器

    
#设定http服务器,利用它的反向代理功能提供负载均衡支持  

#设定负载均衡的服务器列表 
upstream myProxy1 { 
    #weigth参数表示权值,权值越高被分配到的几率越大 
    server 192.168.8.200:80 weight=2; 
    server 192.168.8.201:80 weight=8;
} 
        
server{
    /*****************省略N多***********************/
    listen 80;
    server_name  demo.proxy.com;
 
    access_log  logs/$host.access.log  main;
    error_log   logs/$host.error.log;
    root   html;
    index  index.html index.htm index.php;
    
    
    # 将动态文件.php请求转发给后端 http://myProxy 负载均衡服务器列表
    location ~ \.php$ { 
        proxy_pass http://myProxy; 
        proxy_redirect off; 
        
        # 传递真实IP到后端
        proxy_set_header Host $host; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

        #nginx跟后端服务器连接超时时间(代理连接超时)
        proxy_connect_timeout 90; 
        proxy_read_timeout 90; 
        proxy_send_timeout 90;
        
        
        #设置代理服务器(nginx)保存用户头信息的缓冲区大小
        proxy_buffer_size 4k; 
        #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
        proxy_buffers 4 32k; 
        #高负荷下缓冲大小(proxy_buffers*2)
        proxy_busy_buffers_size 64k; 
        
        #设定缓存文件夹大小,大于这个值,将从upstream服务器传
        proxy_temp_file_write_size 64k; 
        
        #允许客户端请求的最大单文件字节数
        client_max_body_size 10m; 
        #缓冲区代理缓冲用户端请求的最大字节数,
        client_body_buffer_size 128k; 
    } 
}

3 开启gzip

 #压缩配置#  
    gzip  on;           #打开gzip压缩功能  
    gzip_min_length 1k; #压缩阈值  
    gzip_buffers 4 16k; #buffer 不用修改  
    gzip_comp_level 2;  #压缩级别:1-10,数字越大压缩的越好,时间也越长  
    gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;  #        压缩文件类型  
    gzip_vary off;      #跟Squid等缓存服务有关,on的话会在Header里增加 "Vary: Accept-Encoding"  
    gzip_disable "MSIE [1-6]\.";  #IE1-6版本不支持gzip压缩 

4 缓存静态资源

缓存图片

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$  
{  
    root static/image;
    if(-f $request_filename){
        expires 7d;
        break;
    }
   
}  

缓存css

location ~ .*\.(css)$  
{  
    root static/css;
    if(-f $request_filename){
        expires 7d;
        break;
    }
   
}  

缓存js

location ~ .*\.(js)$  
{  
    root static/js;
    if(-f $request_filename){
        expires 7d;
        break;
    }
   
}  

你可能感兴趣的:(Nginx反向代理与负载均衡)