Nginx负载均衡(一)

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
日志服务 SLS,月写入数据量 50GB 1个月
简介: 认识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)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
3月前
|
缓存 负载均衡 算法
解读 Nginx:构建高效反向代理和负载均衡的秘密
解读 Nginx:构建高效反向代理和负载均衡的秘密
89 2
|
18天前
|
负载均衡 应用服务中间件 Linux
"揭晓nginx的神秘力量:如何实现反向代理与负载均衡,拯救服务器于水火?"
【8月更文挑战第20天】在Linux环境下,nginx作为高性能HTTP服务器与反向代理工具,在网站优化及服务器负载均衡中扮演重要角色。本文通过电商平台案例,解析nginx如何解决服务器压力大、访问慢的问题。首先介绍反向代理原理,即客户端请求经由代理服务器转发至内部服务器,隐藏真实服务器地址;并给出配置示例。接着讲解负载均衡原理,通过将请求分发到多个服务器来分散负载,同样附有配置实例。实践表明,采用nginx后,不仅服务器压力得到缓解,还提升了访问速度与系统稳定性。
36 3
|
18天前
|
负载均衡 算法 应用服务中间件
在Linux中,nginx反向代理和负载均衡实现原理是什么?
在Linux中,nginx反向代理和负载均衡实现原理是什么?
|
21天前
|
负载均衡 应用服务中间件 nginx
Nginx怎么去做负载均衡?
Nginx的负载均衡器配置就完成了,而且由于Nginx的配置文件结构清晰而且简洁,调整和维护也相对方便。通过上述步骤,你可以将Nginx设置为一款强大的负载均衡器,提升服务器集群的处理能力及高可用性。
31 4
|
29天前
|
域名解析 负载均衡 网络协议
双重神器合璧,流量洪流中的稳如磐石:揭秘Bind+Nginx负载均衡的超级力量!
【8月更文挑战第9天】在现代网站架构中,负载均衡至关重要,它通过分散客户端请求至多台服务器,确保了系统的高可用性和稳定性。本文介绍如何结合Bind与Nginx实现高效负载均衡。Bind作为DNS服务器,可为单一域名解析出多个IP地址;Nginx作为高性能HTTP服务器,则在这些IP对应的服务器间智能分配流量。通过配置Bind的A记录与Nginx的`upstream`和`proxy_pass`指令,我们能够构建一个既稳定又易扩展的负载均衡系统,显著提升用户体验与系统可靠性。
41 11
|
27天前
|
负载均衡 监控 算法
Nginx:负载均衡小专题(二)
Nginx:负载均衡小专题(二)
35 2
|
27天前
|
负载均衡 监控 网络协议
Nginx:负载均衡小专题(三)
Nginx:负载均衡小专题(三)
66 1
|
27天前
|
负载均衡 监控 算法
Nginx:负载均衡小专题(一)
Nginx:负载均衡小专题(一)
60 1
|
15天前
|
负载均衡 应用服务中间件 Linux
在Linux中,Nginx如何实现负载均衡分发策略?
在Linux中,Nginx如何实现负载均衡分发策略?
|
2月前
|
负载均衡 算法 应用服务中间件
nginx自定义负载均衡及根据cpu运行自定义负载均衡
nginx自定义负载均衡及根据cpu运行自定义负载均衡
29 1
下一篇
DDNS