1.什么是nginx?nginx的功能
1.1什么是nginx:
是高性能的http和反向代理的服务器,处理并发能力特别高。
1.2 nginx功能:
①正向代理:需要客户端指定服务器地址,并指定访问。 ②反向代理:暴露代理服务器地址出去,隐藏真实地址,通过nginx进行代理出去请求指向真实服务器。 ③负载均衡:增加服务器数量,nginx通过代理分发请求到各个服务器上,可以解决各种请求负担。 ④动静分离:就是指把一些动态资源和静态资源隔开,通过nginx对资源进行代理请求,这样就能解决服务器页面显示慢的问题,可以先显示一部分。
1.3 nginx下载及安装
官网地址:http://nginx.org/ 1.安装所需要的依赖openssl、zlib、gcc yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 2.安装pcre wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz 2.1解压tar -zxvf 压缩包名 2.2进入pcre目录进行./configure,然后再进行make && make install 3.安装nginx 解压文件,并./configure,然后再进行make && make install 4.解压完成后,在usr/local/nginx中发现多了个文件夹。 1.4启动nginx 进入usr/local/nginx/sbin ./nginx 启动出现错误:
sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
解决办法:
ln -s /usr/local/lib/libpcre.so.1 /lib64 1.5 关闭nginx ./nginx -s stop
2.nginx配置文件篇
2.1目前nginx.conf文件解析:
1.全局块 配置服务器整体运行的配置指令 worker_processes 1; 处理并发数的配置,数值越大处理的并发数的越多 2.event块 配置用户与nginx服务器的网络连接 worker_connections 1024; 支持的最大连接数为 1024 3.http块 http {//http全局块 include mime.types; //文件引入 default_type application/octet-stream; //MIME-TYPE 定义 sendfile on;// keepalive_timeout 65;//连接超时事件 //这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了 节省互联网服务器硬件成本。 server {//每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。 listen 80; server_name localhost; location / { root html; index index.html index.htm; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html {//每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。 root html; }
} } ①、全局 server 块 最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。 ②、location 块 一个 server 块可以配置多个 location 块。 这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称 (也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓 存和应答控制等功能,还有许多第三方模块的配置也在这里进行。
3.配置负载均衡的用法
①配置监听的端口,新增一个server server{ # listen 为需要监听的端口号为9001 listen 9001; #服务器名称为localhost server_name localhost; location / { #myserver为你要代理的地址多个地址的集群 proxy_pass http://myserver; } }
②配置集群,已tomcat为例 #配置代理服务器集群 注意该段配置在server外面,但是要配置在http块里面 upstream myserver{ #ip_hash server 192.168.119.129:8081 weight=1; server 192.168.119.129:8082 weight=10; } 有几个参数,weight表示权重 可自行调整根据权重,权重越高获取客户端连接就越多跳转 Ip_hash 表示通过hash结果进行分配 默认是采用轮询 fail 按后端服务器的响应时间来分配请求,响应时间短的优先分配。
③查询结果:浏览器输入localhost:9001,能正确访问tomact
4.配置动静分离方法
①把静态页面与动态页面类型分开通过请求,比如把照片跟静态页面分开等
5.搭建高可用nginx集群
①依赖的环境:keepalived, 下载方式:yum install keepalived –y 安装之后,在 etc 里面生成目录 keepalived,有文件 keepalived.conf global_defs { #全局配置 notification_email { #指定keepalived在发生切换时需要发送email到的对象 acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc #指定发件人 smtp_server 192.168.200.1 #指定smtp服务器地址 smtp_connect_timeout 30 #指定连接超时时间 router_id LVS_DEVEL #此处注意router_id为负载均衡标识,在局域网内应该是唯一的。 }
vrrp_instance VI_1 { #虚拟路由的标识符号 state MASTER #指定哪个为master,哪个为backup, #如果设置了nopreempt这个值不起作用,主备考priority决定 interface eth0 #设置实例绑定的网卡 virtual_router_id 51 #VPID标记 priority 100 #优先级,高优先级竞选为master advert_int 1 #检查间隔,默认1秒 authentication { #设置认证 auth_type PASS #认证方式,类型主要有PASS、AH 两种 auth_pass 1111 #认证密码 } virtual_ipaddress { #虚拟vip 192.168.200.16 192.168.200.17 192.168.200.18 } }
virtual_server 192.168.200.100 443 { #集群使用的vip端口号 delay_loop 6 #健康检查的时间间隔 lb_algo rr #调度算法 lb_kind NAT #负载均衡转发规则一般包括DR,NAT,TUN 3种 nat_mask 255.255.255.0 #子网掩码 persistence_timeout 50 #会话保持时间,就是把用户请求转发给同一个服务器,不然 #刚在1上提交完帐号密码,就跳转到另一台服务器2上了 protocol TCP #转发的协议 有tcp和udp两种 real_server 192.168.201.100 443 { #真实的服务器地址 weight 1 #权重 SSL_GET { #健康检测方式 url { #检测url path / digest ff20ad2481f97b1754ef3e12ecd3a9cc #需要检测的内容,检查后的摘要信息 } url { path /mrtg/ digest 9b3a0c85a887a256d6939da88aabd8cd } connect_timeout 3 #连接超时的时间 nb_get_retry 3 #重试次数 delay_before_retry 3 #重试的时间间隔 } } }
virtual_server 10.10.10.2 1358 { delay_loop 6 lb_algo rr lb_kind NAT persistence_timeout 50 protocol TCP sorry_server 192.168.200.200 1358
real_server 192.168.200.2 1358 { weight 1 HTTP_GET { url { path /testurl/test.jsp digest 640205b7b0fc66c1ea91c463fac6334d } url { path /testurl2/test.jsp digest 640205b7b0fc66c1ea91c463fac6334d } url { path /testurl3/test.jsp digest 640205b7b0fc66c1ea91c463fac6334d } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }
real_server 192.168.200.3 1358 { weight 1 HTTP_GET { url { path /testurl/test.jsp digest 640205b7b0fc66c1ea91c463fac6334c } url { path /testurl2/test.jsp digest 640205b7b0fc66c1ea91c463fac6334c } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
virtual_server 10.10.10.3 1358 { delay_loop 3 lb_algo rr lb_kind NAT nat_mask 255.255.255.0 persistence_timeout 50 protocol TCP
real_server 192.168.200.4 1358 { weight 1 HTTP_GET { url { path /testurl/test.jsp digest 640205b7b0fc66c1ea91c463fac6334d } url { path /testurl2/test.jsp digest 640205b7b0fc66c1ea91c463fac6334d } url { path /testurl3/test.jsp digest 640205b7b0fc66c1ea91c463fac6334d } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }
real_server 192.168.200.5 1358 { weight 1 HTTP_GET { url { path /testurl/test.jsp digest 640205b7b0fc66c1ea91c463fac6334d } url { path /testurl2/test.jsp digest 640205b7b0fc66c1ea91c463fac6334d } url { path /testurl3/test.jsp digest 640205b7b0fc66c1ea91c463fac6334d } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
②修改keepalived.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.119.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 虚拟地址 } }
③在/usr/local/src下创建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
④分别启动keepalived和nginx,主从都启动 关闭运行 192.168.17.50 能正常连接到服务器,再次测试关闭主服务器的nginx和keepalived,再次访问还是能访问到
|