一、基本概念
Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP、POP3、SMTP服务。占用内存小,支持大概五万个并发响应,基本可以做到7*24小时不间断运行。
正常情况下客户端直接访问服务器,但是当客户端不断增加时,仅仅一台服务器支撑不了大量的客户端请求,此时选择横向扩展服务器,但是当客户端依次请求每台服务器时,服务器没办法全部获取该用户的session等信息,所以这时候需要一个中间代理进行处理客户的请求然后转发给服务器,这就是nginx的反向代理。由于服务器的配置不同,处理请求的能力不同,所以为了更好的利用服务器的性能,需要nginx的负载均衡进行流量分控。
二、代理
1、正向代理
例如局域网内的用户想访问局域网外的服务器,这时无法正常访问,只能通过代理服务器去访问局域网外的网路。
2、反向代理
用户访问局域网外的服务器只需要通过域名访问代理服务器,代理服务器去选择目标服务器获取数据再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真是服务器ip地址,就算增加目标服务器,用户也不会有感知。
注意: 如果客户端自己用就是正向代理,如果代理服务器用,用户无感知,就是反向代理。
三、负载均衡
nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略就天马行空。
1、轮询
代理服务器收到的请求一次发送到目标主机上。
2、加权轮询
代理服务器将请求优先发送到权重大的目标服务器中,这样可以更好的利用目标服务器性能。
3、Ip hash
客户端每次请求时的session是相同的,为了保证服务器存储客户端的session不会丢失,代理服务器会根据客户端的请求ip经过哈希计算寻找对应的服务器,保证该客户端的每次请求都发送到该目标主机上。但是这样没有充分利用服务器的性能,建议还是将session信息存储到redis上。
4、动静分离
软件开发中,有些请求是需要后台处理的,有些请求是不需要后台处理的,例如css、html、jpg等文件,这些不需要后台处理的文件成为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分出来,动静资源做好了拆分之后,我们就可以根据静态资源的特点将其做缓存操作,提高资源响应的速度。
四、安装nginx
1、linux安装
下载nginx文件 nginx-1.18.0.tar.gz,上传到服务器上,通过tar -zxvf nginx-1.18.0.tar.gz
进行解压,解压完之后进入目录,执行./configure
自动配置nginx。执行make
make install
进行安装,通过whereis nginx
进行查看安装路径,进入该路径下的 sbin查看是否有 nginx,通过./nginx
启动nginx,控制台没有输出,访问ip下的80端口,如果出现welcome to nginx则启动成功。
2、docker安装
# 1、拉取镜像
docker pull nginx
# 2、查看镜像是否下载成功
docker images
# 3、启动
#-d 后台运行
#--name 别名
#-p 服务器外网端口对应容器内的端口号
docker run -d --name nginx01 -p 3344:80 nginx
# 4、本机查看状态
curl localhost:3344
五、常用命令
whereis nginx #查找nginx目录,切换到该目录下的sbin文件夹
./nginx #启动
./nginx -s stop #停止
./nginx -s quit #安全退出
./nginx -s reload #重新加载配置文件
ps aux|grep nginx #查看nginx进程
六、实战
1、配置文件
#全局配置
user root admin;
worker_processes 1;
events {
worker_connections 1024;
}
http {
#http 配置
#负载均衡配置
upstream xx{
#服务器资源
#服务器1 weight=1 设置权重,此时为轮询
server xxx.x.x.x:xxxx weight=1;
#服务器2
server xxx.x.x.x:xxxx weight=1;
#服务器...
}
server {
listen 80;
server_name localhost;
//代理
location /xxx {
proxy_pass http://xxx.x.x.x:xxxx;
}
}
}