Nginx反向代理与负载均衡

来源:互联网 发布:小波分析算法与应用 编辑:程序博客网 时间:2024/06/06 17:28

标签(空格分隔): nginx


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

1.1 反向代理初印象

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

0.jpg

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

1.2 反向代理的作用

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

1.jpg

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

2.jpg

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

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;    }}  
原创粉丝点击