Nginx
正向代理
代理客户端,VPN就是一种正向代理模式,通过代理客户端向外网发起请求,接收返回的信息响应给客户端。
反向代理
代理服务器,当服务器承受压力过大就需要多台服务器,但是我们的访问地址永远只有一个。就需要一个反向代理代理服务器,分发请求。
负载均衡策略
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
内置策略(轮询):
是服务器默认的策略,每个请求按时间顺序分配到不同的服务器,如果服务器down机了,就剔除服务器。
扩展策略(加权轮询): weight = index;
给每个台服务器后面加上一个权重,给每台服务器分配对应权重的请求。
ip_hash: 在upstream开头加上iphash;
只要是相同的IP地址就会固定访问后端的一台服务器,这样可以解决session共享的问题。当服务器down机,那么用户的信息也会随之丢失。
fair: 在upstream最后加上一个fair(这是第三方配置,需要下载模块)
按后端服务器的响应时间来分配请求,响应时间段则优先分配。
常用命令
常用命令
cd /usr/local/nginx/sbin/进入目录
./nginx -s stop 停止
./nginx -s quit 安全退出
./nginx -s reload 重新加载配置文件
./nginx 启动
测试
#负载均衡
upstream test {
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=1;
}
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
#所有的根路径请求都访问到这个路径
proxy_pass http://127.0.0.1:8888;
}
配置文件
全局块
从配置文件开始到events块之间的内容,
其中 worker_processes 1:权值越大,支持的并发量越大,但是收到硬件的制约
event 块
worker_connectioons 最大连接数;
http块
可以有多个server模块,表示不同的网络服务。
动静分离
将静态请求和动态请求分离。当请求静态资源的时候,用nginx去请求静态资源服务器。
其中:autoindex表示列出当前文件夹中的内容
只要访问路径中带有配置中的路径,那么就会访问对应的文件内容
nginx高可用集群
如果出现nginx宕机了,请求就会无法使用。
需要两台nginx服务器
-
安装pcre依赖
- wget downloads.sourceforge.net/project/pcr…
- 解压文件 tar -xvf pcre-8.37.atar.gz
- 进入其目录输入./configure
- 编译安装:make install
-
安装基本环境(第一步执行)
- 使用 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
-
安装nginx
- 下载安装包并解压
- 进入目录执行./configure
- 编译安装:make install
需要keepalived
yum install keepalived -y
配置文件位置:/etc/keepalived/keepalived.conf
需要虚拟的IP地址
修改配置文件
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
# 通过它,可以访问到主机,在hosts文件中,要做映射关系,类似于 127.0.0.1 LVS_DEVEL
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh" # 执行脚本所在的位置
interval 2 #检测脚本执行的间隔,单位秒,每个2秒执行一次脚本
weight 2
}
vrrp_instance VI_1 {
state MASTER # 备份服务器上将 MASTER 改为 BACKUP
interface ens33 # 绑定的网卡(ifconfig 查看网卡)
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1 #每隔一秒发送一次心跳,确保从服务器是否还活着
authentication { # 心跳检测需要的密码
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.11.50 # VRRP H 虚拟地址
}
}
编写检查nginx脚本放在配置文件中的指定位置
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx #Nginx启动命令的位置
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
启动nginx以及Keepalived服务
脚本中设置了启动位置为nginx位置
centos 6 中service Keepalived start
centos 7 中 systemctl start keepalived.service
测试
访问虚拟的ip地址,ip a 可以查看当前nginx是否挂上。