目录
一、Nginx基础知识
1.1 Nginx简介
1.2 Nginx功能
1.3 正向代理与反向代理
1.4 负载均衡
1.4.1 加权轮询
1.4.2 IP哈希
1.5 Nginx优点
1.6 Ngnix应用场景
二、Nginx安装与使用
2.1下载nginx
2.2 安装nginx
2.3 常用命令
一款轻量级的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
单点服务器早已无法承载上万个乃至数十万个用户的持续访问。比如一台Tomcat服务器在理想状态下只能够可以承受住2000个左右的并发量,为了解决这个问题,就需要多台Tomcat服务器来进行负载均衡。
Nginx就是其中的一种解决方案,当用户访问网站时,Nginx拦截到这个访问请求,并将其通过轮询的方式均匀地分配到不同的服务器上。
在Nginx中有一种ip_hash策略,它可以获取到用户的真实IP,计算出hash值来选择服务器,这也是一种优秀的负载均衡方式。
(1)正向代理,就是客户端将自己的请求率先发给代理服务器,通过代理服务器将请求转发给服务器。正向代理就是一个人发送一个请求直接就到达了目标的服务器。
(2)反向代理:反向代理与正向代理不同,正向代理是代理了客户端,而反向代理则是代理服务器端。在有多台服务器分布的情况下,为了能让客户端访问到的IP地址都为同一个网站,就需要使用反向代理。
反方代理就是请求统一被Nginx接收,nginx反向代理服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。
由于不同服务器的配置不同,为了让性能高的服务器分配到更多的请求,便引入了负载均衡的概念。
Nginx的负载均衡方式可以有很多种,如加权轮询(默认)、IP哈希、url哈希等。
加权轮询,也就是通过给服务器添加各自的权重值,Nginx通过权重来进行请求的分配,权重越高接收到的请求数量越多,反之越少:
上图配置了三台服务器,在加权轮询的模式下,6次不同的请求中,权重为3的服务器将会分配到3次请求,权重为2的服务器会分配到2个请求,权重为1的服务器则会分配到1个请求。
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
通过哈希值和ip进行运算,得出一个哈希字符串,一个值。分发的时候进行判断请求之前是否和哈希绑定过。有的话则优先分配 匹配到对应哈希值的服务器上。
(1)跨平台、配置简单、方向代理、高并发连接:处理2-3万并发连接数,官方监测能支持5万并发,内存消耗小:开启10个nginx才占150M内存 ,nginx处理静态文件好,耗费内存少;
(2)Nginx内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了,重新将请求提交到其他的节点上。
(3)处理响应快可实现http服务器、虚拟主机、方向代理、负载均衡Nginx配置简单,可以不暴露正式的服务器IP地址。
缺点:
动态处理差:nginx处理静态文件好,耗费内存少,但是处理动态页面则很鸡肋,现在一般前端用nginx作为反向代理抗住压力。
(1)web服务器
Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
(2)虚拟主机
可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。
(3)反向代理,
(4)负载均衡
当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。nginz 中也可以配置安全管理、比如可以使用Nginx搭建
(5)API接口网关
对每个接口服务进行拦截。
(1)下载
nginx: download,
下载版本 nginx-1.22.0.tar.gz
(1)解压安装包
|
(2)进入解压后的目录,执行configure脚本
1 2 |
|
./configure: error: the HTTP rewrite module requires the PCRE library.
缺少库
yum -y install pcre-devel openssl openssl-devel
离线安装可从该路径下获取,对应系统版本:
Index of /7.3.1611/os/x86_64/Packages
安装后:
error: the HTTP gzip module requires the zlib library.
解决方法:安装zlib-devel
所缺少库的功能:
zlib: 实现gzip压缩解压功能
pcre:实现正则表达式解析功能;
openssl:实现 SSL/TLS功能(加密);
(3)使用make命令进行安装
1 |
|
(4)安装完成后,使用whereis命令查找Nginx的安装位置 (默认安装在/user/local/目录下)
1 |
|
显示如下:
nginx: /usr/local/nginx
或者通过 ps -ef | grep nginx 查看是否安装成功。
(5)进入安装目录下的bin文件夹,启动nginx服务,访问服务器默认的80端口查看是否安装成功:
curl -vo /dev/null http://localhost/index.html
返回
Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET /index.html HTTP/1.1
> User-Agent: curl/7.29.0
> Host: localhost
> Accept: */*
nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
./usr/local/nginx/sbin/nginx #执行nginx ,以默认的配置文件
./usr/local/nginx/sbin/nginx -c xxx.conf #指定配置文件
./usr/local/nginx/sbin/nginx -c /opt/web #指定工作路径
-s #快速处理nginx命令
nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。
nginx -s reload 因改变了Nginx相关配置,需要重新加载配置而重载。
nginx -s reopen 重新打开日志文件。
nginx -c filename 为 Nginx 指定一个配置文件,来代替缺省的。
nginx -t 不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
nginx -v 显示 nginx 的版本。
nginx -V 显示 nginx 的版本,编译器版本和配置参数
参考文献:
【1】https://www.jb51.net/article/205151.htm
【2】 nginx图片缓存服务器配置实战_小魚頭XD的博客-CSDN博客_nginx 图片缓存
【3】Nginx搭建图片服务器(静态资源缓存服务器).zip_nginx静态图片,nginx图片缓存-Web服务器文档类资源-CSDN下载 【4】搭建nginx图片服务器 - 显示账号 - 博客园
【5】https://www.jb51.net/article/82200.htm
【6】Nginx 搭建图片缓存服务器 | Waver's Blog
【7】Nginx 简易教程 - 静默虚空 - 博客园
【8】Nginx搭建图片服务器_Mr@哈希大王的博客-CSDN博客
【9】一文概括6种负载均衡技术的实现方式!-51CTO.COM
【10】nginx学习,看这一篇就够了! - 知乎