网站首页 > 技术教程 正文
网站架构的基础由应用程序、数据库、文件组成,最开始这些都在一台服务器上,随着需求的变化我们如今的网站架构已经将应用、数据、文件都由部署在了独立的服务器上,并且每个部分都做了强大的优化设计,其中Nginx起到重要的作用:
一、服务的反向代理
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用 户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为 Web 加速,即使用反向代理作为 Web 服务器的前置机来降低网络和服务器的负载,提高访问效率。
1、代理方向
正向代理
正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理
反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器
二者之间的区别
位置不同
正向代理,架设在客户机和目标主机之间
反向代理,架设在服务器端
代理对象不同
正向代理,代理客户端,服务端不知道实际发起请求的客户端
反向代理,代理服务端,客户端不知道实际提供服务的服务端
二、在反向代理中配置负载均衡
什么是负载均衡
负载均衡,英文名称为 Load Balance,是高可用网络基础架构的关键组件,通常用于 将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性
Nginx 负载均衡策略
轮询(默认)
每个请求按时间的先后顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉, 能自动剔除
指定权重
指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。权重值越 大被访问的几率就越大
upstream backserver {
server 192.168.0.14;
server 192.168.0.15 weight=2;
}
IP 绑定 ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解 决 session 的问题
upstream backserver {
ip_hash;
server 192.168.0.14;
server 192.168.0.15;
}
实现负载均衡配置
需求
通过 www.cluster.com 访问服务集群。
nginx 服务器:192.168.233.137
tomcat1 服务:192.168.233.136:8080
tomcat2 服务:192.168.233.136:9090
配置 IP 与域名绑定
文件路径:C:\Windows\System32\drivers\etc
向文件添加:
192.168.233.137 www.tomcat1.cn
192.168.233.137 www.tomcat2.cn
192.168.233.137 www.cluster.cn
Nginx 配置服务集群
upstream myServer {
server 192.168.233.136:8080;
server 192.168.233.136:9090;
}
在负载均衡中配置权重
upstream myServer {
server 192.168.233.136:8080;
server 192.168.233.136:9090 weight=2;
}
weight 默认为 1.weight 越大,负载的权重就越大
down 表示当前的 server 暂时不参与负载
fail_timeout 与 max_fails fail_timeout 设置时间默认值为 10s,max_fails 设置次数默认值为 1。 在单位周期为 fail_timeout 设置的时间,中达到 max_fails 次数,这个周期次数内,如果后端同一个节点不可用,那么将把节点标记为不可用,并等待下一个周期(同样时常为 fail_timeout)再一次去请求,判断是否连接是否成功。
backup: 其它所有的非 backup机器 down 或者忙的时候,请求 backup 机器。所以这台机器的压力会最轻
三、Nginx可以做动静分离
为什么要做动静分离
- 动静分离是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署
- 动静分离的一种做法是将静态资源部署在nginx上,后台项目部署到应用服务器上,根据一定规则使对静态资源的请求全部交给nginx处理,而讲动态请求转发给应用服务器处理,达到动静分离的目标,从而提高网站的并发性能,达到优化网站架构的效果
下面我们将使用一台Nginx+一台Tomcat模拟实现动静分离,项目将使用博主之前构建的项目并做部分修改
修改Web项目
修改项目下的index.html,添加img标签和js引入,修改后的代码如下:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>欢迎进入枣面包的面包坊</title> <script type="text/javascript" src="js/nothing.js"></script></head><body> <h1>欢迎进入枣面包的面包坊</h1> <img src="img/photo.jpg"></body></html>
项目添加photo.jpg和nothing.js文件
将项目打包部署到之前搭建的Tomcat服务器中并启动,通过浏览器访问:
可以看到访问返回了3样东西:
- 访问接口通过模板渲染之后得到的文档:document
- 获得JavaScript标签引入的js文件:script——nothing.js
- 获得img标签请求得到的静态图片:jpeg——photo.jpg
配置nginx.conf
worker_processes 1; events { worker_connections 1024;} http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; #配置静态资源交给nginx处理,这里先只配置js和jpg location ~ .*\.(js|jpg) { root /export/data/nginx/appdemo; #静态文件目录 expires 30d; #缓存天数 } #配置除静态资源以外的交给tomcat处理 location / { proxy_pass http://localhost:8080/appdemo-0.0.1-SNAPSHOT/; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
重启Nginx服务
[root@centos6-1 ~]# cd /usr/local/nginx/sbin/[root@centos6-1 sbin]# ./nginx -s reload
web访问Nginx服务:192.168.214.150,情况如下:
发现访问nginx时,即变成了访问tomcat服务,这里就是用nginx进行了反向代理;但是也发现了获取不到nothing.js和photo.jpg文件,那是因为nginx配置了静态资源的路径,而该路径下没有该资源导致的,将对应资源上传到指定位置即可,在nginx.conf文件中的配置的静态资源路径为:/export/data/nginx/appdemo
上传静态资源
使用lrzsz工具上传:三种方式实现Linux的文件上传下载,https://blog.csdn.net/weixin_37490221/article/details/80844825
[root@centos6-1 ~]# cd /export/data/nginx/appdemo/[root@centos6-1 appdemo]# lltotal 8drwxr-xr-x. 2 root root 4096 Aug 27 03:42 imgdrwxr-xr-x. 2 root root 4096 Aug 27 03:42 js[root@centos6-1 appdemo]# cd img/[root@centos6-1 img]# rzrz waiting to receive.Starting zmodem transfer. Press Ctrl+C to cancel.Transferring photo.jpg... 100% 7 KB 7 KB/sec 00:00:01 0 Errors [root@centos6-1 img]# lltotal 8-rw-r--r--. 1 root root 8105 Aug 27 2018 photo.jpg[root@centos6-1 img]# cd ..[root@centos6-1 appdemo]# cd js[root@centos6-1 js]# rzrz waiting to receive.Starting zmodem transfer. Press Ctrl+C to cancel.Transferring nothing.js...Transferring nothing.js... [root@centos6-1 js]# lltotal 0-rw-r--r--. 1 root root 0 Aug 27 2018 nothing.js[root@centos6-1 js]#
浏览器访问
到这里就实现了Nginx和Tomcat的集成,实现了web服务的动静分离,将静态资源交给Nginx处理,这里是将静态资源存储在本地,通过Nginx访问,当然也可以代理到其他静态服务器上;再将非静态资源的请求代理给Tomcat动态处理。这样即削减了Tomcat的压力,又发挥了Nginx高并发的能力,使web服务更加健壮。
希望本文对你有所帮助~~如果对软件测试、接口测试、自动化测试、面试经验交流感兴趣可以私聊我或关注公众号“特斯汀软件测试”。免费领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流。
猜你喜欢
- 2024-10-12 压力测试工具-ab工具(压力测试教程)
- 2024-10-12 java项目测试环境搭建(java环境搭建实验报告)
- 2024-10-12 jmeter压测实战总结(jmeter压测方案)
- 2024-10-12 Nginx负载均衡的原理及处理流程(nginx负载均衡的三种方式)
- 2024-10-12 如何对ESB平台进行性能测试(如何对esb平台进行性能测试)
- 2024-10-12 kubenetes v1.23.0-实战六 集群部署nginx测试
- 2024-10-12 linux 系统生成测试 SSL证书 nginx|https|http2|quic
- 2024-10-12 Web应用服务器性能压力测试(什么工具可以对web服务器进行压力测试)
- 2024-10-12 简单的视频推流测试(ffmpeg+nginx)
- 2024-10-12 利用docker 单机测试nginx的5种负载均衡
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)