1. Nginx简介及安装
Nginx 是一个轻量级,高性能的HTTP和反向代理web服务器,其特点是占有内存少,并发能力强
功能作用:
1. 反向代理
反向代理服务器位于用户与目标服务器之间,对用户来说,它代表着服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器信息。反向代理服务器通常可用来作为web加速缓存,降低网络和服务器的负载,提高访问效率。
2. 负载均衡
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上面,将原先请求到单个服务器上面的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,这就是所说的负载均衡。
3. 动静分离
根据资源类型的不同,分为动态资源和静态资源,将动态页面和静态页面交给不同的服务器来解析,加快解析速度,降低单个服务器的压力。
安装:
1. 下载安装包
官网下载:nginx官网
我已经提前下载好了,在这里通过ftp共享到server1
解压安装包
添加语法检测
进入目录查看编译可选参数
编译
报错,没有编译器,安装编译器
yum install -y gcc
再次编译
报错,缺少PCRE库,安装pcre库
yum install pcre-devel -y
再次编译
报错,缺少openssl,这是因为我们编译时添加了参数--with-http_ssl_module,该模块需要openssl库
安装openssl库
yum install openssl-devel -y
再编译
./configure --prefix=/usr/local/nginx --with-http_ssl_module
编译成功,且可以看到多了一个文件夹objs
make一下
切换到安装目录
可以看到sbin目录下有一个nginx文件,这就是nginx的主程序
2. Nginx启动及版本更新与回退
vim nginx.conf
可以看到默认监听端口为80
默认发布根目录为html 默认发布页面为index.html
查看nginx版本
启动并查看进程
可以看到有两个进程,一个master进程是负责监控worker进程,而worker进程是真正处理请求的进程
测试:
更改默认发布页面
echo "hello nginx" > /usr/local/nginx/html/index.html
访问
可以看到访问的是刚才更改的页面,服务器是nginx
Nginx的版本更新与回退
更新:
注意更新前先备份
解压编译要更新的版本
make(不需要make install)
将生成的nginx复制到安装目录,覆盖原文件
查看版本,发现已经改变
但此时的进程使用的还是原来的二进制文件(加载在内存中)
通过kill命令,让原来的进程不再接受信号,并重新生成nginx进程
让旧进程关闭worker
此时不要着急kill旧的master进程,如果新版本出现问题无法正常工作,可以通过它恢复
回退:
直接通过之前的备份覆盖更新
kill -HUP PID
再告诉更新失败的进程不再接受请求,关闭worker进程
最后关闭更新失败版本的master进程
3. Nginx配置示例
3.1 虚拟主机
vim /usr/local/nginx/conf/nginx.conf
如上图所示,配置了虚拟主机 通过www.huayu.com访问,访问位置是根下的virtualhost目录
新建目录,并写生成发布页面
mkdir /virtualhost
echo "virtual host nginx" > /virtualhost/index.html
启动服务
配置好本地解析
直接访问
可以看到访问的是server1的html默认发布目录里的index.html
访问虚拟主机(虚拟主机在这里也是80端口,通过不同域名来区分)
显然虚拟主机访问的是我们刚配置的虚拟主机发布目录
虚拟主机也可以通过监听不同的端口来区分,我这里使用的是不同域名
注意:nginx本身只支持静态资源
3.2 Nginx的负载均衡
vim /usr/local/nginx/conf/nginx.conf
配置负载均衡,在用户访问bbs.huayu.com的80端口时,实际访问的是本机的8000 8001 8002 8003端口,轮询访问,weight代表权重,即每访问三次8000端口,其他访问一次。可以通过设置不同的服务器地址ip,这样就可以将本机看作一个负载均衡器,负责调度请求到真实的服务,这里的配置只是演示如何调度请求到其他位置。
3.3 防盗链
server1配置nginx图片防盗链,将请求重写到一个盗链图片
服务重载
nginx -s reload
server2上面启动httpd并更改默认发布页面如下
将测试需要的图片资源上传到server1
直接访问
通过server2的盗链访问
可以看到访问不到原图片,访问的是我们重写的地址