1、启动指令 在/usr/local/nginx/sbin 目录下执行 ./nginx 2、关闭指令 在/usr/local/nginx/sbin 目录下执行 ./nginx -s stop 3、重新加载指令 在/usr/local/nginx/sbin 目录下执行 ./nginx -s reload
从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 workerprocess 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。 比如:worker_processes 1; 这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约
影响 Nginx 服务器与用户的网络连接 比如 worker_connections 1024; 支持的最大连接数为 1024
1、http 全局块 http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。 2、server 块
实现效果:使用 nginx 反向代理,访问 www.123.com 直接跳转到tomcat主页 127.0.0.1:8080 1、在windows中的hosts中配置域名:47.104.248.219 www.123.com 2、在nginx配置文件的http块下的server块添加以下配置 server { listen 80; server_name 47.104.248.219; location / { proxy_pass http://127.0.0.1:8080; } }
实现效果:使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中nginx 监听端口为 9001, 访问 http://127.0.0.1:9001/edu/ 直接跳转到 127.0.0.1:8081 访问 http://127.0.0.1:9001/vod/ 直接跳转到 127.0.0.1:8082 1、在nginx配置文件的http块下的server块添加以下配置 server { listen 9001; server_name 47.104.248.219; location ~ /edu/ { proxy_pass http://127.0.0.1:8080; } location ~ /vod/ { proxy_pass http://127.0.0.1:8081; } }
实现效果:访问http://47.104.248.219/edu/a.html,实现负载均衡,平均到8080和8081端口 1、配置文件 upstream myserver{ server 47.104.248.219:8080; server 47.104.248.219:8081; } server { listen 80; server_name 47.104.248.219; location / { proxy_pass http://myserver; } }
负载均衡算法
1、轮询(默认):按照时间顺序逐一分配到不同的服务器 2、权重(weight):权重默认为1,权重越高分配概率越大 upstream server_pool{ server 47.104.248.219 weight=10; server 47.104.248.220 weight=7; } 3、ip_hash:每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题 upstream server_pool{ ip_hash server 47.104.248.219:8080; server 47.104.248.219:8081; } 4、fair(第三方):按后端服务器的响应时间来分配请求,响应时间短的优先分配 upstream server_pool{ server 47.104.248.219:8080; server 47.104.248.219:8081; fair; }
配置文件: server { listen 80; server_name 47.104.248.219; location /www/ { root /data/; #根目录 autoindex on; #显示文件列表 expires 3d; #文件缓存时间(通过对比服务器文件最后更新时间有没有变化,没有变化返回状态码304,有变化返回200) } }
1、安装keepalived:yum install keepalived -y 查看是否安装成功:rpm -q -a keepalived 2、修改keepalived配置文件 3、启动keepalived:systemctl start keepalived.service 4、启动ngxin
keepalived配置文件
#全局配置 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 #ip或者主机名字 } #检测脚本配置 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.17.50 // VRRP H 虚拟地址 } }
检测脚本
#!/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
1、首先nginx服务在linux系统中会有多个进程,包括一个master进程和一个或多个worker进程 2、当客户端发请求给nginx时,由master发布任务,多个worker进行争抢任务 3、每个worker采用独立的进程,相互之间不影响,且不会涉及加锁的问题
1、可以使用 nginx –s reload 热部署,因为多个worker之间互不影响 2、每个worker是独立进程,不会由于一个worker出现问题导致服务中断
1、worker的设置个数和cpu的个数相等最为适宜 2、发送一个请求会占用worker的2个(访问静态字段)或者4个(反向代理)连接数 2个:客户端访问worker,worker返回给客户端 4个:客户端访问worker,worker访问动态服务,动态服务返回给worker,worker返回给客户端 3、一个master,4个worker,每个worker支持的最大连接数是1024,支持的最大并发数是多少 访问静态资源:4x1024/4 反向代理:4x1024/4