nginx反向代理功能
正向代理
代理的为客户段,对于服务器不知道真实客户的信息。例如:翻墙软件。
反向代理服务器
代理的为服务器端。对于客户来说不知道服务器的信息。例如:nginx
配置nginx
server {
listen 82;
server_name localhost;
location /{
# 代理的服务器地址
proxy_pass http://192.168.111.132:8080;
}
}
启动nginx
./usr/nginx/sbin/nginx
nginx的负载均衡
负载均衡(Load Balance [4])其意思就是把请求分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
web项目必须搭建为集群模式,服务器至少搭建2台以上。
运行两个web工程项目
java -jar xxx.jar
配置nginx完成负载均衡
#定义集群名称
upstream xxx{
#真实web服务器集群的信息
server ip地址:8081;
server ip地址:8082;
}
srever{
listen 83;
server_name localhost;
location /{
proxy_pass http:/xxx;
}
}
重新加载nginx配置
/usr/nginx/sbin/nginx -s reload
测试
http://X:83/getInfoX
负载均衡策略
默认为轮询。
权重策略:服务器硬件配置不同时。
weight的值越大权重越大,访问频率越高。
ip_hash策略:根据访问者客户的ip固定访问对应的web服务器。
购买第三方策略插件。
nginx动静分离
动:动态资源[接口] 静:静态资源[css js image]。
分离: 之前我们把静态资源和动态资源全部放在web服务器下。 把静态资源放入nginx服务器下。动态资源web服务器下。
准备web项目
把静态资源放nginx中
配置nginx
测试
nginx的HA高可用的搭建
高可用的原理--keepalived
搭建ha高可用
安装keepalived
yum install -y keepalived
默认安装在/etc/keepalived下
修改keepalived.conf配置文件
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
# ip的地址
smtp_ server 192.168.111.188
smtp_connect_timeout 30
router_id 192.168.111.188
}
# 执行脚本
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2 # 每2s执行一次该脚本
weight -20 # keepalive宕机 权重-20 优先级
}
vrrp_instance VI_1 {
state MASTER # 角色
interface ens33 # 网卡名
virtual_router_id 51 # id 保证主从相同
priority 100 # 优先级 主节点大于从节点
advert_int 1
authentication {
auth type PASS
auth pass 1111
}
virtual_ipaddress {
192.168.111.50 # 虚拟ip. 使用逗号隔开
}
track_script {
chk_http_port # 追踪nginx脚本
}
}
从节点
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
# ip的地址
smtp_ server 192.168.111.189
smtp_connect_timeout 30
router_id 192.168.111.189
}
# 执行脚本
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2 # 每2s执行一次该脚本
weight -20 # keepalive宕机 权重-20 优先级
}
vrrp_instance VI_1 {
state BACKUP # 角色
interface ens33 # 网卡名
virtual_router_id 51 # id 保证主从相同
priority 90 # 优先级 主节点大于从节点
advert_int 1
authentication {
auth type PASS
auth pass 1111
}
virtual_ipaddress {
192.168.111.50 # 虚拟ip. 使用逗号隔开
}
track_script {
chk_http_port # 追踪nginx脚本
}
}
nginx_check.sh
#!/bin/bash
# 检查是否开启nginx---统计nginx进程的个数
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
pkill -9 keepalived
fi
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then #如果nginx没有启动就启动nginx
/app/nginx/sbin/nginx #重启nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then #nginx重启失败,则停掉keepalived服务,进行VIP转移
pkill keepalived
fi
fi
修改权限: chmod 777 nginx_check.sh
启动
nginx
keepalived systemctl start|stop keepalived