1、简介
Nginx 是一款高性能的 Web 服务器,它支持多种用途,包括作为 HTTP 服务器的直接后端、反向代理服务器、邮件服务器(特别是 IMAP 和 POP3 代理)以及用于服务器负载均衡的工具。
使用c语言写。
主要功能:
- 反向代理
- 负载均衡
- 动静分离
2、反向代理
代理是什么
客户端和服务端之间加的一层,即中介。主要是处理一对多或者多对一的客户端和服务端关系的。
正向代理:正向代理类似一个跳板机,代理访问外部资源。
用途:
- 访问原来无法访问的资源,如google
- 可以做缓存,加速访问资源
- 对客户端访问授权,上网进行认证
- 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
如VPN。
反向代理:反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
反向代理的作用:
- 保证内网的安全,阻止web攻击,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网
- 负载均衡,通过反向代理服务器来优化网站的负载
3、负载均衡
负载均衡是什么?
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
nginx负载均衡策略:
- 轮询:默认的负载均衡策略,它按照时间顺序依次将请求分配给不同的后端服务器。如果某个后端服务器失效,轮询机制会将失效节点的请求重新分配给剩余的健康服务器。
- 权值::在这个策略下,可以根据权重设置不同比例地将请求分配给不同的后端服务器。这有助于平衡不同服务器的工作负载,对于性能差异较大的服务器组尤其有用。
- IPHash:这种策略基于客户端的IP地址来进行负载均衡分配,使得每个客户端总是固定地访问同一台后端服务器,这对于维护会话状态非常有帮助。
- 公平::这是一种第三方实现的负载均衡算法,它根据后端服务器的响应时间来决定哪些服务器应该接收到新的请求。响应时间较短的服务器的请求会被优先分配。
- 最少连接:在这种策略下,负载均衡会选择那些拥有最少活跃连接数的服务器。这样可以确保新到达的请求被分配给连接资源较空闲的服务器。
4、动静分离
动静分离原理:服务端接收客户端的请求中,既有静态资源,也有动态资源,静态资源由nginx提供服务,动态资源由nginx转发至后端。
使得Nginx大大提高了我们网站的响应速度,优化用户体验。
5、安装
安装地址:https://nginx.org/en/download.html
windows下安装
目录
conf目录放置配置信息nginx.conf
linux下安装
nginx需要gcc
1 | yum install gcc-c++ |
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:
1 | yum install -y pcre pcre-devel |
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
1 | yum install -y zlib zlib-devel |
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。
1 | yum install -y openssl openssl-devel |
官网下载安装包.tar.gz
解压:
1 | tar -zxvf nginx-1.25.3.tar.gz |
编译安装make:
1 | make |
6、常用命令
1 | nginx #启动 |
7、配置文件
样式:
1 | //主配置文件格式 |
events部分:
1 | events { |
http部分:
1 | 基本格式 |