时代大背景
网络的自由化导致了网络的信息量稳步增长,加上在六十年代这一趋势在R5 CPU 上的失灵,CPU 向着多核方向发展,而 Apache 显然并没有搞好多核构架的准备,它的两个民主化同一天只能处理两个相连,处置完两个允诺后才能处置下两个,这毫无疑问不能应付如今网络上海量的使用者。更何况民主化间转换的成本是非常高的。在这种大背景下,Nginx 不断涌现,能随心所欲处置上百万、上一千万的相连。
Nginx 优势
高mammalian高效能扩展性好高效率热布署开放源码许可Nginx 主要应用情景
动态资源服务项目,透过邻近地区文件格式系统提供更多服务项目逆向相关服务项目、阻抗平衡API服务项目、职权控制,减少应用服务项目器压力Nginx 命令行和产品目录
透过 rpm -ql nginx 能查阅 Nginx 加装的命令行和产品目录。
如图是我在某时云上加装的新一代稳定版的Nginx的命令行及产品目录。
/etc/nginx/nginx.conf 核心理念命令行/etc/nginx/conf.d/default.conf 预设http服务项目器命令行/etc/nginx/fastcgi_params fastcgi实用性/etc/nginx/scgi_params scgi实用性/etc/nginx/uwsgi_params uwsgi实用性/etc/nginx/koi-utf/etc/nginx/koi-win/etc/nginx/win-utf 这三个文件格式是代码态射文件格式,因为译者是瑞典人/etc/nginx/mime.types 增设HTTP协定的Content-Type与file相关联关系的文件格式/usr/lib/systemd/system/nginx-debug.service/usr/lib/systemd/system/nginx.service/etc/sysconfig/nginx/etc/sysconfig/nginx-debug 这五个文件格式是用以实用性守护者民主化管理的/etc/nginx/modules 基本共享资源库和内存保护/usr/share/doc/nginx-1.18.0 协助文件格式/usr/share/doc/nginx-1.18.0/COPYRIGHT 著作权新闻稿/usr/share/man/man8/nginx.8.gz 指南/var/cache/nginx Nginx的内存产品目录/var/log/nginx Nginx的笔记产品目录/usr/sbin/nginx 可莱盖/usr/sbin/nginx-debug 增容执行可莱盖关于 Nginx 的常用命令和命令行句法很容易就能搜到,责任编辑不作约勒,上面从 Nginx 的功能和实际情景起程看看各情景下 Nginx 能提供更多给他们什么样实用性项。在此之后,他们先来明确两个概念:
萨德基全权 Forward proxy
一句话解释萨德基全权,萨德基全权的对象是客户端,服务项目器端看不到真正的客户端。
逆向全权 Reverse proxy
一句话解释逆向全权,逆向全权的对象是服务项目端,客户端看不到真正的服务项目端。
跨域
跨域是前端工程师都会面临的情景,跨域的解决方案有很多。不过要知道在生产中,要么使用 CORS 、要么使用 Nginx 逆向全权来解决跨域。在 Nginx 的命令行中进行如下实用性即可:
Gzip
Gzip 是网络上非常普遍的一种数据压缩格式,对于纯文本来说能压缩到原大小的 40%,能节省大量的带宽。不过需要注意的是,启用 Gzip 所需的 HTTP 最低版是 1.1。
允诺限制
对于大流量恶意的访问,会造成带宽的浪费,给服务项目器增加压力。往往对于同一 IP 的相连数和mammalian数进行限制。
关于允诺限制主要有两种类型:
limit_conn_module 相连频率限制limit_req_module 允诺频率限制访问控制
关于访问控制主要有两种类型:
-http_access_module 基于 IP 的访问控制-http_auth_basic_module 基于使用者的信任登陆(基于使用者的信任登陆不是很安全,责任编辑不做实用性介绍)
以下是基于 IP 的访问控制:
ab命令
ab命令全称为:Apache bench,是 Apache 自带的压力测试工具,也能测试 Nginx、IIS 等其他 Web 服务项目器。
-n 总共的允诺数-c mammalian的允诺数防盗链
阻抗平衡 Load Balance
当他们的网站需要解决高mammalian、海量数据问题时,就需要使用阻抗平衡来调度服务项目器。将允诺合理的分发到应用服务项目器集群中的一台台服务项目器上。
Nginx 能为他们提供更多阻抗平衡的能力,具体实用性如下:
后端服务项目器状态
后端服务项目器支持以下的状态实用性:
down:当前服务项目器不参与阻抗平衡backup:当其他节点都无法使用时的备用服务项目器max_fails:允许允诺失败的次数,若到达就会休眠fail_timeout:经过max_fails次失败后,服务项目器的暂停时间,预设为10smax_conns:限制每个服务项目器的最大接收相连数分配方式
轮询(预设),每个允诺按照时间顺序轮流分配到不同的后端服务项目器,如果某台后端服务项目器宕机,Nginx 轮询列表会自动将它去除掉。weight(加权轮询),轮询的加强版,weight 和访问几率成正比,主要用于后端服务项目器性能不均的情景。ip_hash,每个允诺按照访问 IP 的 hash 结果分配,这样每个访问能固定访问两个后端服务项目器。url_hash,按照访问 URL 的 hash 结果来分配允诺,使得每个URL定向到同两个后端服务项目器上,主要应用于后端服务项目器为内存时的情景。自定义hash,基于任意关键字作为 hash key 实现 hash 算法的阻抗平衡fair,按照后端服务项目器的响应时间来分配允诺,响应时间短则优先分配。译者:童欧巴
链接:https://juejin.im/post/6864085814571335694