Nginx负载均衡(一)

五四青年 2019-11-02

nginx 安全 服务器 防火墙 性能 Apache 源码 高并发 yum web 负载均衡 Lua 淘宝 高性能 应用服务器

认识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

登录 后评论
下一篇
云栖号资讯小编
4987人浏览
2020-07-13
相关推荐
Nginx负载均衡如何进行配置
560人浏览
2011-08-22 15:58:00
lvs nginx haproxy 对比
1183人浏览
2017-11-16 21:16:00
Nginx的TCP负载均衡介绍
1206人浏览
2017-11-11 16:43:00
nginx的负载均衡
8431人浏览
2018-05-19 12:46:13
lvs为何不能完全替代DNS轮询
4734人浏览
2019-08-14 01:05:15
0
1
0
1114