Nginx负载均衡(一)

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
日志服务 SLS,月写入数据量 50GB 1个月
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 认识Nginx (一):Nginx是一个开源且高性能,可靠的Http服务 1:高性能,高并发,高可靠 2:热部署 nginx使用的是epoll网络模型,相比于Apache服务器使用的Select网络模型,epoll模型使用户发起请求会直接处理,效率高 而Select网络模型当用户发送请求后会进.

认识Nginx

(一):Nginx是一个开源且高性能,可靠的Http服务

1:高性能,高并发,高可靠

2:热部署 nginx使用的是epoll网络模型,相比于Apache服务器使用的Select网络模型,epoll模型使用户发起请求会直接处理,效率高 而Select网络模型当用户发送请求后会进行一次遍历扫描,从而导致性能底下

3:高扩展:具有丰富的模块,可以根据自己的需要随时集成

(二):常见的web服务

Apache :早期使用,性能低,用的少,上手难

IIS:微软开发,Windows控制面板中万维网服务中安装使用

Nginx:强大的一批

Tengine:淘宝基于Nginx做的二次开发

GWS:谷歌公司开发的

openresty:也是基于Nginx和Lua开发的

lighttpd:德国开发

(三):应该场景

1:代理

​ 负载均衡

​ Nginx缓存

2:静态资源和动态资源分开处理,应用服务器擅长处理动态内容,如果用户请求的是静态资源,比如图片,那么Nginx可以将用户的请求直接交给最近的静态存储服务器,这样请求的速度就会更快

3:Nginx的安全功能

​ https

​ 限速限流

​ 访问控制

​ Nginx+Lua构建web安全应用防火墙,简称waf (web applocation firewalld)

(四):Nginx安装

1:源码安装(不推荐。复杂)

​ 版本更新迭代困难

2:yum安装

​ 官方的仓库:版本新适合平时学习

3:配置官方仓库,在/etc/yum.repos.d/nginx.repo 新建nginx.repo文件,写入一下官方源

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

这里推荐使用官方未更改过的版本,epel的仓库:一般epel源中Nginx都是版本较低,且一般被人开发过的产品,不太适合平时学习。

4:再安装,发现默认源就会前往刚刚设置的源里面去

yum -y install nginx

1

(五):Nginx基本配置

1:nginx -t 进行语法检测,改完配置,重启前测试,防止配置文件改完报错,一重启,然后你就准备跑路吧!

2:重启并开机自启

systemctl start nginx
systemctl enable nginx

3:这里来说一下Nginx的主配置文件

vim /etc/nginx/nginx.conf

2

4:了解Server站点
使用Server配置网站, 每个Server{}代表一个网站(简称虚拟主机)
server {
​ listen 80; #监听端口, 默认80
​ server_name bgx.com; #提供的域名

#控制网站访问路径
location / {
    root   /usr/share/nginx/html;   #存放网站源代码的位置
    index  index.html index.htm;    #默认返回网站的文件
}

}
include /etc/nginx/conf.d/*.conf;
包含conf.d目录下所有以.conf结尾的文件

(六):Nginx的虚拟主机

一般在企业中会有多套业务,那么在不使用Nginx的情况下可能需要多台服务器来部署,但是Nginx中可以使用一套系统捞部署多套业务,以下是介绍。

Nginx配置虚拟主机的三种方式

1:基于多IP方式
方式一:
3
首先试一下多网卡多IP方式,一般虚拟机加一块网卡改个地址即可

然后进入nginx中server配置文件conf.d

cd /etc/nginx/conf.d
vim game.conf

然后写入

server {
    listen 10.0.0.7:80;
    location / {
        root /ip1;
        index index.html;
    }
    
}

server {
    listen 10.0.0.8:80;
    location / {
        root /ip2;
        index index.html;
    }
    
}

创建ip1和ip2目录

mkdir /ip1
mkdir /ip2

放入测试文件代码

echo "10" > /ip1/index.html
echo "172" > /ip2/index.html

方式二:单网卡,多IP
使用命令临时添加绑定一块网卡

ip addr add 10.0.0.8/24 dev eth0

然后去nginx的conf.dserver中将172地址改为新加的ip,重启即可

重启服务

systemctl reload nginx
systemctl restart nginx

2:基于端口配置方式
可以通过同一个ip不同端口进行访问

这里以81,82两个端口举例

然后进入nginx中server配置文件conf.d并创建prot.conf文件

cd /etc/nginx/conf.d/
vim prot.conf
server {
    listen 81;
    location / {
        root /prot1;
        index index.html;
    }
    
}

server {
    listen 82;
    location / {
        root /prot2;
        index index.html;
    }
    
}

创建目录并存放代码

mkdir prot1
mkdir prot2
echo "81" > /prot1/index.html
echo "82" > /prot2/index.html

重启即可

3:基于多个hosts名称方式(多域名方式)(重要)
以a.wl.com和b.wl.com为例

这里在conf.d中准备两个配置文件,就叫com1.conf com2.conf

vim /etc/nginx/conf.d/com1.conf
server {
    listen 80;
    server_name a.wl.com;
    location / {
        root /com1;
        index index.html;
    }
}
vim /etc/nginx/conf.d/com2.conf
server {
    listen 80;
     server_name b.wl.com;
    location / {
        root /com2;
        index.html;
    }
}
mkdir /com1
mkdir /com2
echo "a.wl" > /com1/index.html
echo "b.wl" > /com2/index.html

重启服务即可

在虚拟环境下可以自己篡改域名

10.0.0.7 a.wl.com
10.0.0.7 b.wl.com

(七):Nginx的管理日志

查看Nginx的日志

tail -f /var/log/nginx/access.log

1:nginx有着非常灵活的日志记录模式,nginx的日志格式可以自己在nginx配置文件中自己通过log_format配置

语法如下

Syntax: log_format name [escape=default|json] string ...;
Default: log_format combined "...";
Context: http server location (针对全局,服务,location生效,范围也不一样)

设置日志方式,可以根据自己的需要,哪些信息需要记录,哪些信息不要记录
nginx_

2:日志的路径或者全局设置,上面是在http下全局生效,现在需要单独给一个网站配置日志,一个网站专门有一个记录日志的地方
比如A网站名叫/etc/nginx/conf.d/game.conf

我想把A网站日志单独设置单独记录,取个日志名叫/var/log/nginx/game.log

注意前面的/var/log/nginx全路径必须以及存在,后面的名字自己取

设置如下:

cd /etc/nginx/conf.d

4
设置完检测nginx -t 并重启进行测试,发现日志记录到新的文件中了

3:在location中可不必在单独设置日志存存放地,如果不想记录某一个location的日志,可以把这个location的日志记录功能关闭

access_log off;

4:日志的切割
_

进入/var/log/nginx查看是否切割,注意关机状态下是不会切割的
5

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
7天前
|
负载均衡 算法 搜索推荐
Nginx 常用的负载均衡算法
【10月更文挑战第17天】在实际应用中,我们需要根据具体的情况来选择合适的负载均衡算法。同时,还可以结合其他的优化措施,如服务器健康检查、动态调整权重等,来进一步提高负载均衡的效果和系统的稳定性。
|
19天前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
86 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
3天前
|
负载均衡 算法 应用服务中间件
Nginx 常用的负载均衡算法
【10月更文挑战第22天】不同的负载均衡算法各有特点和适用场景。在实际应用中,需要根据具体的业务需求、服务器性能和网络环境等因素来选择合适的算法。
13 3
|
7天前
|
负载均衡 监控 应用服务中间件
除了 Nginx,还有以下一些常见的负载均衡工具
【10月更文挑战第17天】这些负载均衡工具各有特点和优势,在不同的应用场景中发挥着重要作用。选择合适的负载均衡工具需要综合考虑性能、功能、稳定性、成本等因素。
|
16天前
|
负载均衡 应用服务中间件 nginx
Nginx的6大负载均衡策略及权重轮询手写配置
【10月更文挑战第9天】 Nginx是一款高性能的HTTP服务器和反向代理服务器,它在处理大量并发请求时表现出色。Nginx的负载均衡功能可以将请求分发到多个服务器,提高网站的吞吐量和可靠性。以下是Nginx支持的6大负载均衡策略:
67 7
|
14天前
|
负载均衡 算法 Java
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
尼恩,一位资深架构师,分享了关于负载均衡及其策略的深入解析,特别是基于权重的负载均衡策略。文章不仅介绍了Nginx的五大负载均衡策略,如轮询、加权轮询、IP哈希、最少连接数等,还提供了手写加权轮询算法的Java实现示例。通过这些内容,尼恩帮助读者系统化理解负载均衡技术,提升面试竞争力,实现技术上的“肌肉展示”。此外,他还提供了丰富的技术资料和面试指导,助力求职者在大厂面试中脱颖而出。
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
|
17天前
|
缓存 负载均衡 算法
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
Nginx 是一款高性能的 HTTP 和反向代理服务器,也是一个通用的 TCP/UDP 代理服务器,以及一个邮件代理服务器和通用的 HTTP 缓存服务器。
29 0
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
|
24天前
|
开发框架 负载均衡 前端开发
Nginx负载均衡
Nginx负载均衡
|
24天前
|
负载均衡 Java 应用服务中间件
Nginx负载均衡配置
Nginx负载均衡配置
|
25天前
|
负载均衡 算法 应用服务中间件
nginx反向代理与负载均衡
nginx反向代理与负载均衡
23 1