一、什么是Nginx?
Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器(即用户直接访问反向代理服务器就可以获得目标服务器的资源)。Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 。它支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数
了解更多请前往:https://lnmp.org/nginx.html
二、什么是正/反向代理?
正向代理:隐藏了客户端信息
如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。
反向代理:隐藏了服务端信息
其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。
三、如何使用Nginx实现反向代理(即负载均衡策略)?
策略名称 | 实现方式 |
---|---|
权重轮询 | 给服务器设置一个权重值(weight),用于调整不同服务器上请求的分配率;权重越大,被分配到请求的几率越大。 |
ip_hash | 每个请求按照发起客户端的ip的hash结果进行匹配,这样下一个固定ip地址的客户端总会访问到同一个后端服务器(在一定程度上解决了集群部署环境下session共享的问题)。 |
least_conn(最少连接) | nginx不会向负载繁忙的服务器上分发请求,而是将请求分发到负载低的服务器上。 |
fair(第三方) | 动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高。 |
url_hash(第三方) | 按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器。 |
sticky(第三方) | 为了确保一个客户端只和一台服务器通讯,它会保持长连接,并在结束会话后再次选择一个服务器,保证了压力均衡。 |
一般权重轮询为常用策略,可以根据实际情况进行配置
Nginx除了以上提及的功能外,一般还有动静分离的功能
在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。
四、Nginx在linux下的安装与配置
1.安装gcc
安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:
yum install gcc-c++
2.PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:
yum install -y pcre pcre-devel
3.zlib 安装
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
yum install -y zlib zlib-devel
4.OpenSSL 安装
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。
yum install -y openssl openssl-devel
5.下载安装包
手动下载.tar.gz安装包,地址:https://nginx.org/en/download.html
选择Stable version
下的 nginx-1.18.0 pgp
下载完毕上传到服务器上 /root
6.解压安装包
tar -zxvf nginx-1.18.0.tar.gz cd nginx-1.18.0
7.配置安装
./configure
make
make install
安装成功后可查找安装路径: whereis nginx
一般为 nginx: /usr/bin/nginx /usr/local/nginx
至此nginx已经安装完成了
8.常用命令
cd /usr/local/nginx/sbin/
./nginx 启动
./nginx -s stop 停止
./nginx -s quit 安全退出
./nginx -s reload 重新加载配置文件
ps aux|grep nginx 查看nginx进程
配置演示
upstream test{
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=2;
}
location / {
root html;
index index.html index.htm;
proxy_pass http://test;
}
启动成功后访问服务器ip:80