使用nginx实现负载均衡

标签:服务器, nginx, 负载均衡

前面文章我已经记录了如何部署Nginx如果部署django,如果不做负载均衡,按步骤把nginx和django部署到一台服务上就可以实现WEB服务。但是为了保证服务的性能和稳定性,我们就需要实现负载均衡。 负载均衡的基本原理就是前端服务器用来接收请求再分发给后端的服务器进行处理。所以我们前端要只部署nginx服务,后端可以只部署uwsgi和django,也可以部署nginx+uwsgi+django。本文主要记录前端服务器的nginx.conf配置。

在http节点里添加

    upstream backend  {
            server  192.168.1.108:80;
            server  192.168.1.109:80;
        }

修改server节点

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_buffering off;
        proxy_pass http://backend;
    } 

多应用按域名分发

就是写多个upstream配置到不同的server中,如:

    upstream django  {
            server  192.168.1.108:80;
            server  192.168.1.109:80;
            server  192.168.1.110:80;
            server  192.168.1.111:80;
    }
    upstream php  {
            server  192.168.1.112:80;
            server  192.168.1.113:80;
    }
    server {
        listen       80;
        server_name  www.zhuangyan.cn;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_buffering off;
          proxy_pass http://php;
        }
       
    }

    server {
        listen       80;
        server_name  app.zhuangyan.cn;
        location / {
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_buffering off;
          proxy_pass http://django;
      }
      location ~/static/ {
            root  /home/django/;
            index  index.html index.htm;
      }      
    }

其他配置

按权重分配什么的配置,请参考官方文档

Written on 2016-04-22
上篇: centos6.5上部署PHP服务
下篇: centos6.5上进行两台服务器之间的文件双向同步