一、什么是负载均衡和反向代理

1.负载均衡

  负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器具有等价的地位,都可以单独提供服务而无需其他服务的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立的响应用户。负载均衡能够平均分配客户请求到服务器阵列,解决大量并发服务访问问题。

2.反向代理与正向代理

2.1反向代理

  反向代理是指以代理服务器来接收Internet上的请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求的连接客户端。

2.2正向代理

  正向代理用于拒绝其它外部访问方式并提供内部网络对外部网络的访问能力。

二、常见的Web负载均衡的方法

1.用户手动选择

2.DNS轮询

3.四/七层负载均衡设备

4.多线多地区智能DNS解析与混合负载均衡方式

三、Nginx负载均衡与反向代理配置实例

#使用的用户和组
#user nobody;
#指定工作衍生进程数(一般等于CPU的总核数或总核数的两倍,例如两个4核CPU,则总核数为8)
worker_processes 1; #错误日志存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; #指定PID存放路径
#pid logs/nginx.pid; events {
#允许的连接数
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout 0;
keepalive_timeout 65; #gzip on; upstream test_one {
server 10.194.101.240:80 weight=4 max_fails=2 fail_timeout=30s;
server 10.194.101.241:80 weight=4 max_fails=2 fail_timeout=30s;
server 10.194.101.242:80 weight=4 max_fails=2 fail_timeout=30s;
} upstream test_two {
server 10.194.101.243:80 weight=4 max_fails=2 fail_timeout=30s;
server 10.194.101.244:80 weight=4 max_fails=2 fail_timeout=30s;
server 10.194.101.245:80 weight=4 max_fails=2 fail_timeout=30s;
} #include https_params.conf;
#虚拟主机1,反向代理test_one这组服务器
server {
listen 8888;
server_name www.testone.com; #charset koi8-r; #access_log logs/host.access.log main; location / {
root html;
index index.html index.htm;
} location /test/ {
#如果后端返回502、504、超时等错误时,自动请求转发到upstream负载均衡池中的另一台服务器,实现故障转移
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://test_one;
       #用于在向反向代理的后端Web服务器发起请求时添加指定的Header头信息
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_set_header X-Server-IP $server_name;
proxy_set_header X-Server-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 30;
proxy_send_timeout 30;
proxy_read_timeout 300;
}
}
#虚拟主机2,反向代理test_two这组服务器
server {
listen 8888;
server_name www.testtwo.com; #charset koi8-r; #access_log logs/host.access.log main; location / {
root html;
index index.html index.htm;
} location /test/ {
#如果后端返回502、504、超时等错误时,自动请求转发到upstream负载均衡池中的另一台服务器,实现故障转移
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://test_two;
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_set_header X-Server-IP $server_name;
proxy_set_header X-Server-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 30;
proxy_send_timeout 30;
proxy_read_timeout 300;
}
}
}

四、Nginx负载均衡的HTTP Upstream模块

Upstream模块是nginx负载均衡的主要模块,它提供一个简单的方法来实现在轮询和客户端IP之间的后端服务器负载均衡,并可以对后端服务器进行健康检查。

1.ip_hash指令

upstream test_one {
ip_hash;
server 10.194.101.240:80 weight=4 max_fails=2 fail_timeout=30s;
server 10.194.101.241:80 weight=4 max_fails=2 fail_timeout=30s down;
server 10.194.101.242:80 weight=4 max_fails=2 fail_timeout=30s;
}

ip_hash指令能够将某一个请求通过hash算法定位到同一台后端服务器上。当某个用户在服务器A上登陆,当访问该站点其它url时,也保证请求到A服务器上,否则加入请求到B服务器上会显示未登陆。因此使用ip_hash无法保证服务器的负载均衡,建议采用服务器的session共享替代nginx的ip_hash指令。如果某一个后端服务器要从nginx负载均衡中摘除一段时间,应该使用down指令,而不是直接删除或者注释掉,直接删除或者注释掉,hash值会发生变化。

2.server指令

该指令用于指定后端服务器的名称和参数。服务气的名称可以使一个域名、一个IP地址、端口号或Unix Socket。在后端服务器名称之后可以跟以下参数:

3.Upstream指令

该指令用于设置一组可以在proxy_pass和factcgi_pass指令中使用的代理服务器,默认的负载均衡方式为轮询。Upstream模块拥有以下变量:

Nginx HTTP负载均衡和反向代理的配置与优化的更多相关文章

  1. Nginx(六):Nginx HTTP负载均衡和反向代理的配置与优化

    一.什么是负载均衡和反向代理 随着网站访问量的快速增长,单台服务器已经无法承担大量用户的并发访问,必须釆用多台服务器协同工作,以提高计算机系统的处理能力和计算强度,满足当前业务量的需求.而如何在完成同 ...

  2. Nginx负载均衡和反向代理的配置和优化

    负载均衡 负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位, 反向代理 是指以代理服务器来接受internet上的请求,然后将请求转给内部的服务器 常见的负载均衡 1. ...

  3. Nginx 之负载均衡与反向代理

    负载均衡服务器策略: 1.轮循  每个请求逐个分发到后端服务器 2.加权轮循  按照分配的权重将请求分发到后端服务器 3.ip hash 轮询的基础上,保持一个客户端多次请求分发到一台后端服务器上 一 ...

  4. nginx的负载均衡和反向代理

    本文介绍一些负载均衡和反向代理的一些基本概念,然后介绍如何基于nginx实现,包括两种安装nginx的方法:yum安装和源码安装,以及ngix该如何配置等. 什么是负载均衡? 概念 负载均衡是高可用网 ...

  5. Nginx HTTP负载均衡和反向代理配置

    当前大并发的网站基本都采用了Nginx来做代理服务器,并且做缓存,来扛住大并发.先前也用nginx配置过简单的代理,今天有时间把整合过程拿出来和大家分享,不过其中大部分也是网上找来的资源. nginx ...

  6. Nginx负载均衡与反向代理的配置实例

    user www www; worker_processes 10; error_log /data1/logs/nginx_error.log crit; pid /usr/local/webser ...

  7. nginx负载均衡和反向代理有什么区别

    近在研究nginx的负载均衡和反向代理,先看下这两个简单的配置吧! 负载均衡 worker_processes 1; events { worker_connections 1024; } http{ ...

  8. CentOS中实现Nginx负载均衡和反向代理

    一.安装必要软件 负载均衡服务器:IP设置为192.168.1.10 Web服务器1:安装Apache或者Nginx,IP设置为192.168.1.11: Web服务器2:安装Apache或者Ngin ...

  9. Nginx 负载均衡和反向代理实践

    nginx 以哪个配置文件启动 Nginx 负载均衡和反向代理实践 环境介绍 192.168.1.50    在这台主机上配置Nginx 的反向代理,负载均衡,和web1,web1使用的81号端口 1 ...

随机推荐

  1. 使用 matplotlib 显示彩色图像

    详细说明见代码注释 """ 介绍如何使用 matplotlib 输入.输出 彩色图像,并简要介绍如何将数组表示形式的图像数据显示为图像 """ ...

  2. 【C# .Net GC】清除非托管类型(Finalize终结器、dispose模式以及safeHandler)

    总结 1.一般要获取一个内核对象的引用,最好用SafeHandle来引用它,这个类可以帮你管理引用计数,而且用它引用内核对象,代码更健壮 2.托管中生成并引用非托管,一但非托管和托管中的引用断开(托管 ...

  3. 微服务从代码到k8s部署应有尽有系列(九、事务精讲)

    我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中 ...

  4. 每日一算之变位词(C#)

    今天看编程珠玑里面,看到一个关于查找变位词的题目,大概意思如下:post,stop,tops这几个是变位词,找出类似的这些词语来. 解题思路一:既然是变位词,1.他们的长度一定是一致的:2.还有就是他 ...

  5. 《Symfony 5全面开发》教程02、安装运行环境并初始化Symfony项目

    Symfony是PHP框架,在学习Symfony之前,我们需要安装PHP运行环境.如果你是MacOS系统,可以使用Homebrew来安装PHP运行环境. Homebrew官网 https://brew ...

  6. Pandas:plot相关函数

    0.注意事项 及 各种错误 1)绘制bar图时,如果出现重复的x值被合并到一个情况(导致X轴应该显示内容有缺失),可能是由于Pandas版本太低: 2)无法设置中文title,在代码中加入两句话: p ...

  7. python 镜像仓库获取最新版本号

    #/bin/python# -*- coding: utf-8 -*-import requestsfrom urllib import parsefrom requests.auth import ...

  8. Tableau绘图一热图、日历图、人口金字塔、标靶图、凹凸图、帕累托图

    Tableau绘图一热图.日历图.人口金字塔.标靶图.凹凸图.帕累托图 本文首发于博客冰山一树Sankey,去博客浏览效果更好.直接右上角搜索该标题即可 一.热图 例子:示例超市 可以通过更改颜色来改 ...

  9. LeetCode-099-恢复二叉搜索树

    恢复二叉搜索树 题目描述:给你二叉搜索树的根节点 root ,该树中的两个节点被错误地交换.请在不改变其结构的情况下,恢复这棵树. 进阶:使用 O(n) 空间复杂度的解法很容易实现.你能想出一个只使用 ...

  10. ASP.NET CORE 项目搭建(2022 年 3 月版)

    ASP.NET CORE 项目搭建(2022 年 3 月版) 自读 沉淀了多年的技术积累,在 .NET FRAMEWORK 的框架下尝试造过自己的轮子. 摸索着闭门造过 基于 OWIN 服务后端. 摸 ...