nginx
nginx命令
查看版本:【./nginx -v】
启动:【./nginx】
关闭:【./nginx -s stop】
重载配置文件: 【./nginx -s reload】
配置文件
修改nginx配置文件:【nginx.conf】
配置文件内分块:
全局块:设置一些影响nginx 服务器整体运行的配置指令
events块:涉及的指令主要影响 Nginx 服务器与用户的网络连接
http块:配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
全局http块:
server块:
全局server块:
location块:
反向代理:
通过路径分发请求
----示例配置:配置在http块内
server{
listen 9001;
server_name 192.168.17.129;
location ~ /fedu/
proxy_pass http://127.0.e.1:8080;
}
location ~ /fvod/{
proxy_pass http://127.0.0.1:8081;
}
}
1、= :用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。。
2、~:用于表示uri包含正则表达式,并且区分大小写。
3、~用于表示 uri包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的uri前,要求Nginx服务器找到标识uri和请求字符串匹配度最高的 location后,立即使用此 location处理请求,而不再使用location块中的正则uri和请求字符串做匹配。
注意:如果uri包含正则表达式,则必须要有或者标识。v
负载均衡
配置文件: 【upstream】
分配策略:
- 轮询:按顺序分配
- weight权重:权重值越高分配机率越大
- ip_hash:按iphash结果分配,每个访客固定访问某一台服务器
- fair第三方:按后端服务器响应时间分配请求,响应时间短的优先分配
动静分离
动态和静态请求分开。
----配置在server块内
location /www/{
root /data/;
index index.html index.htm ;
}
location /image/{
root /data/;
autoindex on; # 能列出文件的目录
}
location后 配置的是【请求访问路径】
root 后配置的是【文件根路径】
文件存放在【根路径+访问路径】下
高可用
某nginx宕机后,请求还能正常访问。
配置高可用:
- 安装多nginx
- 每个nginx服务器中安装keepalived 修改keepalived.conf配置文件配置
----keeplived.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.17.129
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 100 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.50 // VRRP H 虚拟地址
}
}
----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
测试高可用效果:
- 分别启动两台nginx和keepalived,通过配置的虚拟ip进行访问,可以正常访问。
- 把master类型的nginx和keepalived停掉,通过配置虚拟ip进行访问,还可以正常访问,即测试成功。
keepalived配置文件:
全局配置块:global_defs
router_id 配置主机名称
脚本配置块:vrrp_script
weight -20 #服务挂掉后权重减少20
虚拟ip配置块:vrrp_instance VI_1
nginx原理
master和worker
请求->master->worker通过争抢机制得到任务调用tomcat完成
多worker好处:
- 可以使用nginx -s reload热部署
- 每个worker是独立进程,其中一个worker出问题,其他继续争抢,不会造成服务中断。
需设置多少个worker:
- nginx同redis类似都采用了io多路复用机制,每个worker都是一个独立的进程,但每个进程里只有一个主线程。和cpu核数相等最为适宜。
单个请求worker占用几个连接数:
- 2或4 静态=2 动态需访问tomcat=4
worker最大连接数=worker总数*每个worker最大连接数
静态访问最大并发数=worker最大连接数/2
反向代理最大并发数=worker最大连接数/4