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

  • 相关阅读:
    利用腾讯云COS云对象存储定时远程备份网站
    怎么生成主机最快
    海量服务实践──手 Q 游戏春节红包项目设计与总结(下篇)
    零基础读懂视频播放器控制原理——ffplay播放器源代码分析
    海量服务实践──手 Q 游戏春节红包项目设计与总结(上篇)
    Express+Less+Gulp配置高效率开发环境
    告知你不为人知的UDP-疑难杂症和使用
    告知你不为人知的UDP-连接性和负载均衡
    国内首款 FPGA 云服务器,性能是通用 CPU 服务器 30 倍以上
    Nginx反向代理腾讯云COS的一个坑
  • 原文地址:https://www.cnblogs.com/bendouyao/p/10179106.html
Copyright © 2011-2022 走看看