1. nginx 简介
-
什么是 nginx? 可以做什么事
nginx 是高性能的 HTTP 和反向代理的服务器,处理高并发十分强大,能经受高负载,能支持高达 50000 个并发连接数
-
正向代理
需要在客户端配置代理服务器进行指定网站访问
-
反向代理
暴露的是代理服务器地址,隐藏了真实服务器 IP 地址,访问网站都是通过反向代理服务器做"中间商"
-
负载均衡
增加服务器的数量,将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器。
-
动静分离
加快网站的解析速度,把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低单个服务器的压力
2.nginx 安装
-
Linux 安装 nginx
-
准备工作
-
打开虚拟机(VM),系统Centos-7
-
到 nginx 官网下载软件http://nginx.org/
-
开始进行 nginx 安装
-
安装 pcre 依赖
-
联网下载 pcre 压缩文件依赖
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
-
使用 ls 命令查看 src 路径下有没有 pcre 压缩文件
-
解压压缩文件
tar -xvf pcre-8.37.tar.gz
-
等待解压完成, ./configure 完成后,回到 pcre 目录下执行 make && make install
-
-
安装 openssl 、zlib 、gcc 依赖
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
-
安装 nginx
-
到官网下载的 nginx 文件夹路径
-
使用命令解压
-
执行 ./configure
-
执行 make && make install
-
-
-
-
进入nginx/sbin/nginx 目录 启动服务
-
在浏览器中 输入 127.0.0.1 访问 查看是否显示 nginx 的欢迎界面
-
在 Windows 系统中访问 Linux 中 nginx ,默认不能访问的,因为防火墙问题
-
关闭防火墙
-
开放访问的端口号,80端口
-
-
查看开放的端口号
firewall-cmd --list-all
-
设置开放的端口号
firewall-cmd --add-service=http –permanent
firewall-cmd --add-port=80/tcp --permanent
-
重启防火墙
firewall-cmd –reload
3.nginx 常用命令和配置文件
常用命令:
-
进入 nginx 目录中
cd /usr/local/nginx/sbin
-
查看 nginx 版本号
./nginx -v
-
启动 nginx
./nginx
-
停止 nginx
./nginx -s stop
-
重新加载 nginx
./nginx -s reload
配置文件:
-
配置文件位置
cd /usr/local/nginx/conf/nginx.conf
-
配置文件的内容
包含三部分:
-
全局块:配置服务器整体运行的配置指令
例:worker_processes 1;处理并发数的配置
-
events 块:影响 nginx 服务器与用户的网络连接
例:worker_connections 1024; 支持的最大连接数为 1024
-
http 块
包含两部分:
-
http 全局块
-
server 块
-
-
4.nginx 配置反向代理(1)
-
实现效果
打开浏览器,在浏览器栏输入地址 www.123.com,跳转到 Linux 系统 tomcat 主页面
-
准备工作
-
在 Linux 系统安装 tomcat ,使用默认端口 8080
-
下载 tomcat ,解压
tar -xzvf apache-tomcat-9.0.0.M1.tar.gz
-
进入 tomcat 的 bin 目录中 ,./startup.sh 启动 tomcat 服务器
-
对外开放访问的端口
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd –reload
-
查看已经开放的端口号
firewall-cmd --list-all
-
在 Windows 系统通过浏览器访问 tomcat 服务器
-
-
访问过程
-
Windows 的 host 文件进行配置 -- 配置域名映射的 IP 地址
-
Windows 浏览器发送请求给 nginx ,nginx进行映射到 tomcat的访问界面
-
-
具体配置
-
在 Windows 系统的 host 文件进行域名和 IP对应关系的配置
-
在 nginx 进行请求转发的配置(反向代理配置)
server{
listen 80:
server_name IP地址;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
}
}
-
-
最终在 Windows 浏览器输入 www.123.com 测试
4.nginx 配置反向代理(2)
-
实现效果
-
使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中
-
nginx 监听端口为 9001
-
访问 http:// IP地址:9001/edu/ 直接跳转到 127.0.0.1:8080
访问 http:// IP地址:9001/vod/ 直接跳转到 127.0.0.1:8081
-
-
准备工作
-
准备两个 tomcat 服务器,一个 8080 端口,一个 8081 端口
-
创建文件夹和测试页面
-
-
具体配置
-
找到 nginx 配置文件,进行反向代理配置
server{
listen 80:
server_name IP地址;
location ~ /edu/ {
proxy_pass http://127.0.0.1:8080;
}
location ~ /vod/ {
proxy_pass http://127.0.0.1:8081;
}
} -
开放对外访问的端口号 9001 8080 8081
-
-
最终在 Windows 浏览器输入IP地址加上路径 测试访问 /edu/和/vod/下的资源文件
5.nginx 配置负载均衡
-
实现效果
浏览器地址输入地址 http:// IP地址/edu/a.html,负载均衡效果,平均 8080 和 8081 端口中
-
准备工作
-
准备两台 tomcat 服务器,一台 8080,一台 8081
-
在两台 tomcat 里面 webapps 目录中,创建名称是 edu 文件夹,在 edu 文件夹中创建页面 a.html ,用于测试
-
-
在 nginx 的配置文件中进行负载均衡的配置
upstream myserver{
server IP地址:8080;
server IP地址:8081;
}
server{
listen 80;
server_name IP地址;
location{
proxy_pass http://myserver;
root html;
index index.html index.htm;
}
} -
nginx 分配服务器策略
-
轮询 (默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除
-
weight
weight 代表权重默认为1,权重越高被分配的客户端越多
-
ip_hash
每个请求按访问 IP 的 hash 结果分配,这样每个访客固定访问一个后端服务器
-
fair (第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配
-
6.nginx 配置动静分离
通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏
览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资源
设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,
所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,
不建议使用 Expires 来缓存),我这里设置 3d**,表示在这** 3 天之内访问这个 URL**,发送一**
个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码 304**,**
如果有修改,则直接从服务器重新下载,返回状态码 200。
-
准备工作
在 Linux 系统中准备静态资源,用于进行访问
-
具体配置
在 nginx 配置文件中进行配置
server{
listen 80;
server_name IP地址;
location /www/ {
root /data/;
index index.html index.htm;
}
location /image/ {
root /data/;
autoindex on;
}
} -
最终测试
浏览器中输入地址
7.nginx 的高可用集群
-
什么是 nginx 高可用
-
需要两台 nginx 服务器
-
需要 keepalived
-
需要虚拟 IP
-
-
配置高可用的准备工作
-
需要两台服务器 192.168.1.33 和 198.168.1.34
-
在两台服务器安装 nginx
-
在两台服务器安装 keepalived
-
-
在两台服务器安装 keepalived
-
使用 yum 命令进行安装
yum install keepalived –y
-
安装之后,在 etc 里面生成目录 keepalived,有文件 keepalived.conf
-
-
完成高可用配置
-
修改 /etc/keepalived/keepalivec.conf 配置文件
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.1.31
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2 #(检测脚本执行的间隔)
weight 2
}
vrrp_instance VI_1 {
state BACKUP # 备份服务器上将 MASTER 改为 BACKUP
interface ens33 //网卡
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.110 // VRRP H 虚拟地址
}
} -
在 /usr/local/src 添加检查脚本
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi -
把两台服务器上 nginx 和 keepalived 启动
-
启动 nginx:./nginx
-
启动 keepalived:systemctl start keepalived.service
-
-
-
最终测试
-
在浏览器地址栏输入 虚拟 ip 地址 192.168.1.110
-
把主服务器(192.168.1.31)nginx 和 keepalived 停止,再输入 192.168.1.110
-
nginx 的原理
-
mater 和 worker
-
worker 如何进行工作
-
一个 master 和 多个 worker的好处
-
-
每个 worker 是独立的进程,如果有其中的一个 rorker 出现问题,其他worker独立的,继续进行争抢,实现请求过程,不会造成服务中断
-
-
设置多少个 worker 合适
worker 数量和服务器的 CPU 数量相等是最为适宜的
-
连接数 worker_connection
第一个:发送请求,占用了 woker 的几个连接数?
答案:2 或者 4 个
第二个:nginx 有一个 master,有四个 woker,每个 woker 支持最大的连接数 1024,支持的
最大并发数是多少?
普通的静态访问最大并发数是: worker_connections \ worker_processes /2,
而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections \
worker_processes/4。