zoukankan      html  css  js  c++  java
  • Linux:nginx负载均衡

    前提:web服务器框架已搭建好lamp/lnmp),已配置好虚拟主机名(这个的配置在上几章中有写)。

    nginx做负载均衡主要的模块是upstream.

    1、在新的机器上安装nginx

    创建用户nginx和组nginx

    解压

    进入目录

    编译:

    ./configure --user=nginx --group=nginx --prefix=/application/nginx1.6.2 --with-http_stub_status_modele --with-http_ssl_module

    make

    make install

    创建软连接

    启动

    检查端口lsof -i:80

    2、修改配置文件

    在http标签内,增加upstream 配置。并在server标签中,修改location。(可参考官网的帮助文档http://nginx.org/en/docs/stream/ngx_stream_upstream_module.html)

    upstream的配置可以是ip,或虚拟主机域名,或域名+端口

     需要注意的是,在负载均衡过程中,对不通的web服务器转发请求的概率是有一定的算法的。

    但是在像会话保持的问题上,比如访问其中一个web服务器时时登录状态,突然转到另一个服务器可能就会不登陆。这时可用ip_hash算法.保证每次同一个ip访问的都是同一个web。但是这种方法不太好,会导致负载不均

    我们常用的方法时session共享,或放在用户本地。

    3、本地host解析要解析到负载均衡机器上(这台机器)。

    4、如果web服务器自己有多个虚拟主机,一个web服务器上有多个网站部署。nginx代理转发请求给对应的upstream中的ip后,不能确定访问的哪个域名,加生proxy_set_header 参数,就告诉服务器,我请求的即时当前我要i提交的这个域名

    举例:

    web服务器A上有2个基于域名的虚拟主机:www.111.com   bbs.111.com

    web服务器B上有2个基于域名的虚拟主机:www.111.com   bbs.111.com

    现在负载代理的机器上配置有nginx,准备做负载均衡。上面步骤2中的server标签有2个,一个配置的www.1111.com一个配置的bbs.1111.com 

    此时如果客户端要访问bbs.1111.com,提交请求到web服务器A或者web服务器B,再访问web服务器A或者B的时候,因为web服务器上有2个虚拟主机,她其实是分不清要去访问哪个的。这时候就需要再nginx代理机器上的server/location中添加上参数proxy_set_header ,告诉web服务器,我要访问的时bbs.111.com而不是www.111.com

  • 相关阅读:
    pip安装不成功的解决办法
    nginx常用的请求头参数和防DDOS攻击
    nginx报错:‘open too many files’解决
    nginx根据http_user_agent来拦截访问
    centos7安装logstash
    aws创建实例ec2时关联IAM
    docker清理多余的镜像和stop的容器
    理想
    +: indexed part-select
    Features Download Pricing Mind Maps Blog XMind的快捷键
  • 原文地址:https://www.cnblogs.com/bendouyao/p/10179106.html
Copyright © 2011-2022 走看看