赞
踩
Nginx 不仅可以做反向代理,实现负载均衡。 还可以通过代理服务器来访问服务器的过程 就叫 正向代理。需要在客户端配置代理服务器进行指定网站访问
反向代理:客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们 所说的负载均衡
传统方式:
为了加快网站解析速度,采用动静分离的方式:
下载
首先先打开nginx官网:http://nginx.org/
进入2017版本的,找到nginx 1.12.1这个版本,点击进入下载
下载1.12.2压缩包。
pcre.8.37版本下载
进入官网:https://sourceforge.net/projects/pcre/files/pcre/8.37/
安装
1、安装 openssl 、zlib 、 gcc 依赖
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
2、安装 pcre 依赖
sudo yum install gcc-c++
(使用sudo yum install gcc-c++时会自动安装/升级gcc及其他依赖的包。)
重新执行命令 ./configure
成功!
3、同理,在usr/src 目录下,直接向xshell中拖入下载好的 nginx.tar.gz 压缩包
关闭防火墙:systemctl stop firewalld
开启防火墙:systemctl start firewalld
查看防火墙状态:systemctl status firewalld
安装成功!
为了让防火墙不拦截Nginx的端口,可以进行如下设置:
进入nginx目录中,nginx命令必须在nginx的sbin目录下进行使用:
cd /usr/local/nginx/sbin
查看版本号
./nginx -v
启动nginx
./nginx
停止nginx
./nginx -s stop
重新加载nginx
./nginx -s reload
nginx配置文件位置
cd /usr/local/nginx/conf/nginx.conf
配置文件的内容
实现的效果
打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 tomcat 主页面中
准备工作
在linux系统中安装Tomcat,使用默认端口8080
添加对外开放访问端口的权限
添加8080端口:firewall-cmd --add-port=8080/tcp --permanent
重载防火墙:firewall-cmd –reload
查看已经开放的端口号: firewall-cmd --list-all
测试:在windows系统中输入linux服务器,查看是否能够访问到tomcat服务器页面
具体操作:
1、在windows系统中的host文件中,添加域名与ip地址之间的映射,以方便在浏览器输入www.123.com之后,能够跳转到nginx服务器
在hosts文件中配置自己的ip地址加www.123.com
2、在nginx的配置文件中,进行请求转发的相关配置(反向代理配置)
3、测试:经过nginx服务器的请求转发,最终访问www.123.com,转发到tomcat服务器上
实现效果
使用 nginx 反向代理:根据访问的路径,需要nginx服务器处理,将请求跳转到不同端口的服务中,其中 nginx 服务器监听端口为 9001
准备工作
具体配置
location 指令说明
该指令用于匹配 URL
语法如下:
开放对外访问的端口号 9001 8080 8081
测试
实现效果
浏览器地址栏中,输入地址 http://192.168.17.129/edu/a.html,有负载均衡的效果,即:平均到 8080 和 8081 端口中
准备工作
具体配置(这里主要是平均分配,即轮询)
在 nginx 的配置文件中进行负载均衡的配置(主要是在http块中,进行配置):
测试
请求显示的页面在8080和8081端口下的页面,来回切换
nginx 分配服务器策略
轮询(默认)
weight
ip_hash
fair(第三方)
基本介绍
把动态跟静态请求分开,动静分离从目前实现角度来讲大致分为两种:
通过 location 指定不同的后缀名实现不同的请求转发。
通过 expires 参数设置(在location中进行添加),可以使浏览器缓存过期时间,减少与服务器之前的请求和流量:
具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可, 所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件, 不建议使用 Expires 来缓存),我这里设置 3d,表示在这 3 天之内访问这个URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码 304,如果有修改,则直接从服务器重新下载,返回状态码 200。
准备工作
在linux系统中准备静态资源,比如image、www两个文件夹,存放静态资源
具体配置
测试
最后检查 Nginx 配置是否正确即可,然后测试动静分离是否成功,之需要删除后端 tomcat 服务器上的某个静态文件,查看是否能访问,如果可以访问说明静态资源 nginx 直接返回了,不走后端 tomcat 服务器
访问 image(也可以直接在路径中添加想要访问的静态资源名)
访问 www
Keepalived + Nginx 高可用集群(主从模式)
什么是nginx高可用
配置高可用集群的准备工作
global_defs { #全局配置 notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.11.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 { # 虚拟ip配置 state BACKUP # 备份服务器上将 MASTER 改为 BACKUP interface ens33 //网卡 virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同 priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小(主机100,备机90) advert_int 1 # 默认每隔一秒检测主机状态 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.11.88 // VRRP H 虚拟地址 (对外暴露的虚拟ip地址) } }
#!/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
最终测试
在浏览器地址栏输入 虚拟 ip 地址 192.168.11.88
把主服务器(192.168.11.129)nginx 和 keepalived 停止,再输入 192.168.11.88,内部访问的是备用nginx服务器(192.168.17.133)
仍然可以访问!
1、采用 master 和 worker 的工作方式
mater作为管理者,管理和监控工作进程
worker作为实际处理进程,采用 争抢 的方式对处理请求进行处理
2、worker是如何工作的
3、一个 master 和多个 woker 有好处
可以使用 nginx –s reload 热部署,利用 nginx 进行热部署操作
每个 woker 是独立的进程,如果有其中的一个 woker 出现问题,其他 woker 独立的, 继续进行争抢,实现请求过程,不会造成服务中断
4、设置多少个 woker 合适
加油叭!程序猿!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。