Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强。有报告表明能支持高达50000个并发连接数。
(1)正向代理
在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网的访问
(2)反向代理
我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器,获取数据后,再返回给客户端。此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器ip地址
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原来请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力
(1)安装pcre依赖
把安装的压缩文件放到Linux上
解压缩
进入解压缩之后的目录执行./configure
然后再执行make && make install
安装完成之后,可以执行命令pcre-config --version查看版本号
(2)其它依赖的安装类似
tar -zxvf openssl-1.0.2h.tar.gz
cd openssl-1.0.sh/
./configure shared zlib
make depend
make && make install
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure
make && make install
(3)安装Nginx
把安装的压缩文件放到Linux上
解压缩
进入解压缩之后的目录执行./configure(这是不需要ssl证书的安装方式)
这是需要ssl证书的安装:./configure --with-http_ssl_module --with-openssl=/usr/local/share/applications/install/openssl-1.0.1h
最后再执行make && make install
安装完之后会自动在/usr/local下创建文件夹nginx,在nginx下的sbin目录下有启动脚本
Linux服务器有防火墙,端口是不可以随意访问的,需要将nginx的访问端口在防火墙中做配置
查看防火墙firewall-cmd --list-all
设置开放的端口:sudo firewall-cmd --add-port=80/tcp --permanent
重启防火墙:firewall-cmd -reload
(1)使用Nginx命令的前提是进入到/usr/local/nginx/sbin目录下执行命令
(2)查看Nginx版本号:./nginx -v
(3)启动nginx ./nginx
(4)关闭nginx ./nginx -s stop
(5)重新加载nginx ./nginx -s reload
配置文件所在位置:/usr/local/nginx/conf/nginx.conf
第一部分:全局块
从配置文件开始到events块之间的内容,主要会设置一些影响nginx整体运行的配置指令,比如:worker_processes 1;值越大,支持并发处理量越大
第二部分:events块
events块涉及的指令主要影响nginx服务器与用户的网络连接,比如:worker_connections 1024;支持的最大连接数
第三部分:http块
包括http全局块和server块
请求192.168.17.129:80转发到http://127.0.0.1:8080
location简单语法配置:
分配服务器策略:
(1)轮询(默认)
每个请求按时间顺序逐一分配到不同的服务器,如果后端服务器down掉,能自动剔除
(2)weight
weight代表权重,默认为1,权重越高,被分配到的客户端越多
(3)ip_hash
每个访问按照ip的hash结果分配,这样每个访客固定访问一个服务器,可以解决session的问题
(4)fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配
静态文件的配置,访问的是Linux某个目录下的静态文件,和前端静态文件放某个服务器访问不一样
自己的配置实现:
目录/data/www/图1.png
目录/data/html/test.html
访问图片的路径为:
访问静态页面的路径为:
1、配置高可用的准备工作
(1)需要两台服务器;
(2)需要两台服务器都安装nginx;
(3)需要两台服务器都安装keepalived yum install keepalived -y
安装之后再etc里面生成目录keepalived,有文件keepalived.conf
2、完成高可用配置(主从配置)
(1)修改/etc/keepalived/keepalived.conf配置文件
router_id:服务器主机名;在/etc下的hosts文件中配置
脚本的配置
虚拟ip的配置
(2)在/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
(3)把两台服务器的nginx和keepalived都启动
启动keepalived的命令:systemctl start keepalived.service
master&worker
一个master和多个worker有好处
(1)可以使用nginx -s reload热部署,利于nginx进行热部署;
(2)每个worker是独立的进程,如果有其中一个worker出现问题,其它worker独立的,
继续进行争抢,实现请求过程,不会造成服务中断;
(3)设置多少个worker合适
worker数和服务器的cpu数相等是最为适宜的
(4)worker连接数worker_connection
如果内容对大家有所帮助,感谢鼓励!实现我小时候一人给我一块钱的美梦,哈哈!