nginx
常用命令
1.查看nginx版本号
./nginx -v
2.启动nginx
./nginx
3。关闭nginx
./nginx -s stop
4.重新加载nginx
./nginx -s re
配置文件 nginx.conf
1.全局块
设置影响nginx服务器整体运行的配置命令
2.events
块
主要影响nginx服务器与用户的网络连接
3.http
块
nginx
配置最频繁的地方
-
http
全局块 server
块
- 与虚拟主机有关
- 包含:
-
server
全局块 -
location
块
一.nginx配置实例1:反向代理1
1.实现效果:
(1).打开浏览器,输入www.123.com
跳转到服务器指定的端口主页
2.准备工作
(1)启动服务器,打开指定的端口。
(2)对外开放指定的端口
firewall-cmd --add-port=****/tcp --permanent
firewall-cmd --reload
查看已经开放的端口号
firewall-cmd --list-all
3.打开物理机
的浏览器访问对应IP:port
测试是否成功
4.具体配置
(1)物理机
的hosts
文件中:
#配置域名映射的ip地址
ip+空格+域名
(2)在nginx
进行请求转发的配置(反向代理配置)
在nginx.conf
文件中进行配置:
1.在server
块中:
server_name
改成对应的虚拟机的ip
;
location
中添加转发的路径
proxy_pass http://127.0.0.1:port;
5.测试
启动nginx
二.nginx配置实例1:反向代理2
多个端口的请求转发
三.nginx配置实例2:负载均衡
1.nginx分配服务器策略:
默认:轮询,按照时间的顺序逐一分配到服务器列表
weight:代表权重,权重大,分配的请求数越多 `
upstream server_pool{
server ip:port weight=10;
server ip2:port weight=10;
}
ip_hash :每个请求按方粉ip的hash结果分配,这样每一个访客固定一个后端服务器,可以解决session的问题,例如:
upstream server_pool{
ip_hash;
server ip:port;
server ip2:port;
}
fair(第三方):按照后端服务器的响应时间分配客户端的请求。
upstream server_pool{
server ip:port;
server ip2:port;
fair;
}
2.nginx.conf配置文件配置:
在http块中
upstream myserver{
server 服务器ip:端口; #服务器列表
server 服务器ip2:端口;
……
} # 负载均衡的服务器列表
同时修改 server中的server_name和location中的proxy_pass
四.nginx配置实例:动静分离
- 概念:静态请求与动态请求分离
- 第一种是动态请求服务器和静态资源服务器分开。
- 第二种是静态和动态文件混合在一起,通过nginx来分开。
通过location
指定不同的后缀名实现不同的请求转发,
通过expires
参数设置,设置浏览器缓存过期的时间
- 具体配置
- 在
nginx.conf
配置文件中:
server
中
-
server_name
的修改:
location /www/ {
root /data/;
index index.html index.htm;
}
location /image/ {
root /data/;
autoindex on; #列出文件夹中的内容
}
五,nginx高可用
- 问题:当nginx宕机时,高可用解决该问题。
- 如何解决?
- 多台nginx(nginx1、nginx2,……)
- 主从架构(
master
,backup
)
-
keepalived
:用于检测主从nginx的状态,来切换lived的nginx - 对外开放的时一个虚拟IP,主从nginx都要配置这个虚拟
IP
,keepalived
来监测
- 配置高可用:
- 实例:两台服务器
- 安装nginx工具
- 安装keepalived工具
yum -y install keepalived
rpm -q -a keepalived 检查安装是否成功
- 安装在/etc/keepalived
- 配置文件在
/etc/keepalived/keepalived.conf
global_defs
全局定义
router_id LVS_DEVEL
#访问到服务器的名字
vi /etc/hosts
127.0.0.1 LVS_DEVEL
vrrp_script_chk_http_port
#脚本配置
-
script “path”
#检测脚本 -
interval 2
#检测脚本执行的间隔 每隔两秒执行一次 -
weight 2
#权重 当脚本成立时,降低权重,从主变到从
vrrp_instance_VI_1
-
state MASTER
#MASTER 否则BACKUP -
interface ens33
#网卡名 -
virtual_router_id 51
#主备机的virtual_router_id必须相同 -
priority 100
#主备机取不同的优先级,主机值越大,备份机越小 -
advert_int 1
#每隔1秒检测心跳 virtual_ipaddress{ip # vrrp h 虚拟地址 对外开放的虚拟ip,……}
- 完成高可用配置(主从配置):
- 修改
keepalived
配置文件:
- 脚本文件
nginx_check.sh
:
#!/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
systemctl start keepalived.service
- 测试
- 测试浏览器输入
虚拟IP
ip a
- 测试停止
主服务器中
的nginx
和keepalived