nginx优点:
|--支持较大的并发量
|--内存占用较小
|--支持Rwrite重写
|--可以在不同系统上运行
|--成本低廉
nginx的代理模式:
|--正向代理
|--负责将接收到的请求转发给某一个服务器进行处理
|--负责将服务器响应的结构转发给发送请求的浏览器
|--对客户端来说,nginx服务器是一个跳板工具,客户端通过这个跳板间接访问目标服务器
|--反向代理
|--负责将接收到的请求转发给某一个服务器进行处理
|--负责将服务器响应的结构转发给发送请求的浏览器
|--对客户端来说,nginx服务器就是想要访问的目标服务器
|--注意nginx只做转发不参与处理
nginx的安装与启停:
|--下载nginx的压缩包,并将其放入linux下的指定位置中
|--解压nginx的压缩包,得到其安装文件夹
|--通过yum list installed | grep gcc命令检查是否安装gcc编译器
|--如果没安装则通过yum install gcc -y命令进行安装
|--通过yum list installed | grep openssl命令检查是否安装openssl库
|--如果没安装则通过yum install openssl openssl-devel -y命令进行安装
|--通过yum list installed | grep pcre命令检查是否安装pcre库
|--如果没有安装则通过yum install pcre pcre-devel -y命令进行安装
|--通过yum list installed | grep zlib命令检查是否安装pcre库
|--如果没有安装则通过yum install zlib zlib-devel -y命令进行安装
|--进入nginx安装文件夹中执行./configure --prefix=XX命令指定nginx安装信息
|--XX用于指定nginx的安装目录,一般为/usr/local/nginx
|--进入nginx安装文件夹中执行make命令进行编译
|--进入nginx安装文件夹中执行make install命令进行安装
|--启动nginx
|--方式一
|--执行XX/nginx命令即可启动nginx
|--XX为我们指定的nginx的安装目录
|--方式二
|--执行XX/nginx -c YY命令即可启动nginx
|--XX为我们指定的nginx的安装目录
|--YY为所生成的nginx.conf配置文件所在的位置(精确到文件名)
|--注意在该命令末尾添加-t即可检查nginx.conf配置文件是否含有语法错误
|--注意nginx的默认启动端口为8080
|--关闭nginx
|--方式一
|--执行kill -QUIT XX命令关闭
|--XX为nginx服务器进程的端口号
|--注意该命令会先停止新用户对服务器的访问,然后等所有已经访问的用户结束访问后再关闭进程
|--方式二
|--执行kill -TERM XX命令关闭
|--XX为nginx服务器进程的端口号
|--注意该命令会直接杀死进程
|--重启nginx
|--执行XX/nginx -s reload命令即可重启nginx服务器
|--注意重启指令会先杀死进程再重新加载
nginx.conf配置文件的剖析:
|--worker_processes 1 表示工作进程数目为1
|--可以将1修改为其他值自定义工作进程数目,一般为cpu数或cpu数的两倍
|--error_log logs/error.log 表示当前日志的输出路径为logs/error.log
|--可以修改logs/error.log路径自定义日志输出路径
|--可以在末尾添加日志级别,默认日志级别为error
|--worker_connections 1024; 表示每个worker进程的连接数上限为1024
|--可以通过修改数值自定义连接数上限
|--注意该配置定义的是每个而不是总量
|--注意每个worker进程的连接数不能超过65535
|--include mime.types; 表示nginx所支持的多媒体类型
|--如果有需求,可以在mime.types中添加需要支持的媒体类型
|--default type application/octet-stream; 表示默认文件类型为流类型
|--当nginx接收的文件类型不在支持范围内时,会用默认支持的类型打开文件
|--sendfile on; 表示开启高效文件传输模式
|--可以将on修改为off关闭该模式
|--tcp_nopush on; 表示防止网络阻塞
|--可以将on修改为off关闭该模式
|--keepalive_timeout 65; 表示当前连接的超时时间为65秒
|--可以修改数值自定义超时时间
|--gzip on; 表示开启文件压缩输出模式
|--可以将on修改为off关闭该模式
|--listen 80; 表示当前server所监听的端口为80
|--可以通过修改数值自定义当前server监听的端口
|--server_name localhost; 表示当前server所监听的服务名为localhost
|--可以通过修改localhost自定义当前server监听的服务名
|--location / {
root html;
index index.html index.htm;
}
|--表示当拦截到/路径后,会去配置文件所在路径下的html文件夹中寻找index.html或index.htm文件进行匹配
|--可以修改/自定义需要拦截的路径
|--可以修改html自定义拦截到路径后需要去访问的路径
|--可以修改index.html index.htm自定义拦截到路径后需要匹配的资源
|--注意nginx执行转发的路径为我们自定义拦截到路径后需要去访问的路径拼上所指定的拦截路径
nginx的负载均衡:
|--在nginx.conf配置文件的server域中配置拦截路径,具体格式如下
|--location /XX {
proxy_pass YY;
}
|--XX为需要拦截的路径
|--YY用于设置需要转发去到的upstream名字
|--在server的同级域中配置upstream,具体格式如下
|--upstream XX {
server YY:ZZ KK;
}
|--XX用于设置该upstream的名称
|--YY为需要通过负载均衡运算选择访问的服务器ip地址
|--ZZ为需要通过负载均衡运算选择访问的服务器端口号
|--KK用于设置该服务器是否为备用服务器,为backup时表示为备份服务器,不设置表示非备份服务器
|--备份服务器会在其他服务器都宕机的情况下才启动
|--负载均衡策略
|--轮循策略
|--即轮流访问upstream中的server
|--注意默认就是采用轮循策略,不需要进行额外的配置
|--权重策略
|--在upstream域中的每个server配置末尾添加weight=XX
|--XX为需要设置的权重
|--nginx会根据我们分配的权重计算出该在什么时候将给哪个server分发请求
|--ip_hash策略
|--在upstream域中添加ip_hash配置
|--nginx会算出当前ip地址的哈希值,然后通过该哈希值对server数量取模判断应该访问哪一个server
|--最少连接策略
|--在upstream域中添加least_conn配置
|--nginx会将请求分发给当前堆积连接最少的那一个server
|--注意实际部署项目时会准备多个nginx采用动静分离的方式进行部署
|--即一个总nginx服务器进行负载均衡,如果为动态资源则转给tomcat服务器,如果为静态资源则转给处理静态资源的nginx服务器