当前所在位置: 首页 > 域名平台

LVS、Nginx和Haproxy负载均衡使用场景Nginx核心指令listen与server_name入门

2021-10-11 本站作者 【 字体:

lvs、nginx、haproxy负载均衡使用场景理解

1. 负载能力

lvs抗负载能力最强,因为仅作分发不处理请求,相当于只作转发不做进一步处理直接在内核中完成,对系统资源消耗低(LVS DR模式);

nginx和haproxy相对来说会弱,但是日PV2000万也没什么问题,因为不仅接受客户端请求,还与后端upstream节点进行请求并获取响应,再把响应返回给客户端,对系统资源和网络资源消耗高;
注:建议如果公司网站流量日PV在2000万以上,并发在7,8万以上才考虑用lvs+keepalived架构

Nginx核心指令listen与server_name入门

在nginx.conf配置文件中有常见且重要的指令,在Nginx中nginx.conf配置文件详解 中介绍了一部分,下面将对listen和server_name进行介绍。

1.listen

(1)含义

指定服务监听的地址,如果使用IP协议,则可以包括IP地址和端口;如果使用UNIX域套接字协议,则为文件路径。

2. 功能性

(2)作用域

只能在server块中设置,并起作用。

(3)设置方法

lvs仅支持4层tcp负载均衡,haproxy可以支持4层tcp和7层http负载均衡,nginx可以支持7层http负载均衡(新版本也支持7层负载均衡);nginx功能强大,配置灵活,可做web静态站点,静态缓存加速,动静分离,并支持域名,正则表达式,Location匹配,rewrite跳转,配置简单直观明了,还可以结合etc或consule做发布自动化上下线等等;haproxy相对nginx的7层负载均衡会弱一些,灵活性不足,个人建议一般用haproxy做TCP负载均衡更合适一些;

3. 运维复杂度

lvs相对来说部署架构更复杂一些,lvs对网络是有要求,lvs必须与real server在同一个网段,也更费资源,需要多2台服务器成本;

nginx和haproxy部署架构更简单,对网络也没要求,更便于后续维护;
注:lvs,nginx,haproxy要实现高可用,都需要借助keepalived软件

对于IP协议来讲,可以只配置端口,可以只配置IP,也可以IP和端口都配置。

server { # 监听127.0.0.1的9000端口 listen 127.0.0.1:9000; # 监听locahost的9000端口 listen localhost:9000; # 监听root权限用户127.0.0.1的80端口,非root权限用户不允许启动nginx listen 127.0.0.1; # 监听本机所有IP的9000端口 listen 9000; # 监听本机所有IP的9000端口 listen *:9000; # 监听IPv6的9000端口 listen [::]:9000; # 监听IPv6的回环IP的默认80端口(root权限) listen [::1]; }

在listen指令下可以指定default_server,表明其所在的server块为默认配置,客户端的请求要匹配优先级最低(具体见下)。如果不指定,为配置文件中第一个声明的server块为默认配置。

如果没有配置listen指定,对于root权限用户监听80端口,对于非root用户监听8000端口。

2.server_name

(1)含义

定义虚拟主机的名称,并由此确定客户端的请求由哪个server块处理。其值可以是localhost(默认)、服务器IP、域名。

一般一个域名对应一个IP,而一个IP可以有多个域名。

域名是分级别的:一级域名(顶级域名)、二级域名、三级域名等,以英文的句点(.)进行分隔;一级域名可以包括多个二级域名,一个二级域名可以包括多个三级域名,以此类推。域名是需要在特定的组织进行注册或备案。

(2)作用域

只能在server块中设置,并起作用。

(3)设置方式

当server_name的值设为域名时,有多种设置方法。当客户端发出请求后,nginx会根据如下顺序123456进行搜索匹配,配对成功则停止搜索,然后在合适location块中处理请求。

1)完整的域名

2)以通配符*开头的域名

3)以通配符*结尾的域名

4)正则表达式的域名

使用正则表达式时,server_name的值以~开头,域名中的点需要加\(反斜杠)进行转义。

server { listen 80; server_name domain.com www.domain.com; } server { listen 80; server_name *.domain.com ; } server { listen 80; server_name domain.* ; } server { listen 80; server_name ~^(www\.)?(.+)$; }

正则表达式的点(.)表示除了换行符(\n)之外的任意单个字符,加号(+)表示匹配前面子表达式1次或N次,问号(?)表示匹配前面子表达式0次或1次,^表示以其后字符串开始,$表示以其前的字符串结尾。

5)其他特殊情况

当server_name被指定为为空字符串时,即server_name "";表示可以匹配没有带host的请求。

在HTTP/1.0协议中不支持请求中带HOST字段,在HTTP/1.1中要求请求中必须带host字段。

当server_name被指定为下划线时,即server_name _;表示可以匹配任意请求。

6)默认配置

在listen指令中指定default_server的值。

阅读全文
id_1广告位-300*300
相关推荐

一文弄懂vlan、三层交换机、网关、DNS、子网掩码、MAC地址抖音收购支付牌照,字节跳动储备新域名,官方称为防恶意侵权

一文弄懂vlan、三层交换机、网关、DNS、子网掩码、MAC地址抖音收购支付牌照,字节跳动储备新域名,官方称为防恶意侵权
11月30日,有消息称,字节跳动常用来存储自家域名的注册商“易名”旗下新增一个名...

中文域名是什么意思域名是什么意思啊

中文域名是什么意思域名是什么意思啊
域名,简称域名、网域,是由一串用点分隔的名字组成的Internet上某一台计算机...

阿里云服务器购买教程购买云服务器送的免费域名是已经备案了吗

阿里云服务器购买教程购买云服务器送的免费域名是已经备案了吗
1.购买云服务器送的免费域名,如果是测试的临时域名,是备案了的。2.如果是自己买...

互联网经营许可证怎么办?互联网药品交易服务的资格证书怎么办理?

互联网经营许可证怎么办?互联网药品交易服务的资格证书怎么办理?
首先感谢悟空问答的邀请,最近比较忙,终于抽出时间来认真回答几个问题了,也希望能帮...

域名注册申请需要准备哪些材料?gov.cn域名还能申请吗?

域名注册申请需要准备哪些材料?gov.cn域名还能申请吗?
 gov.cn域名仅供政府机构注册,个人与企业不能注册。如需要注册.gov 必须...

frp通过指定域名访问部署于内网的 web 服务SAE 场景下,应用流量的负载均衡及路由策略配置实践

frp通过指定域名访问部署于内网的 web 服务SAE 场景下,应用流量的负载均衡及路由策略配置实践
流量管理从面向实例到面向应用在 Serverless 场景下,由于弹性能力以及底...

搭建属于自己的内网穿透SpringCloud极简入门|zuul 动态转发url困扰很久功能终于实现了6

搭建属于自己的内网穿透SpringCloud极简入门|zuul 动态转发url困扰很久功能终于实现了6
前言  大家好我是不一样的科技宅,每天进步一点点,体验不一样的生活。今天给大家带...

DNS解析域名:发现域名和IP不一致,访问了该域名会如何?github项目:tcp穿透内网passbytcp

DNS解析域名:发现域名和IP不一致,访问了该域名会如何?github项目:tcp穿透内网passbytcp
目的网上搜索了不少tcp内网穿透的代码,功能全的大多是go版本,无奈对go不感冒...

哪家域名支持url转发功能如何判断域名URL转发是否正常?

哪家域名支持url转发功能如何判断域名URL转发是否正常?
展开全部看能否访问了。URL转发的缺点: 1)经过我们实际测试,速度上要比...

基于JavaFx和SpringBoot搭建的实用小工具集合Shopify后台撰写、隐藏、删除博客文章操作教程

基于JavaFx和SpringBoot搭建的实用小工具集合Shopify后台撰写、隐藏、删除博客文章操作教程
在shopify店铺中创建博客后,您便可以开始撰写博客文章。您的文章可以包含文字...