当前位置: 首页 > news >正文

38nginx四层负载均衡配置,和动静分离解析

四层负载均衡

  • 四层负载均衡:工作在传输层,只看「IP + 端口」转发,不解析内容,快且简单,适合数据库、SSH 等纯 TCP/UDP 流量;
  • 七层负载均衡:工作在应用层,会解析 HTTP 等应用内容(如 URL、域名),能精细化转发和控制,适合 Web、API 等场景。

Nginx四层负载均衡配置测试

需求:
1通过访问负载均衡的5555端口,实际是后端的web01的22端口在提供服务
2通过访问负载均衡的6666端口,实际是后端的mysql的3306端口在提供服务配置主配置文件在http区块外包含的语句
[root@siceng nginx]#grep conf.c nginx.conf
......
events {worker_connections  1024;
}include /etc/nginx/conf.c/*.conf;http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';
......创建四层配置文件
[root@siceng nginx]#mkdir conf.c
[root@siceng nginx]#cd conf.c/[root@siceng conf.c]# cat lb.conf
stream {upstream web01 {server 192.168.74.8:22;}upstream db01 {server 192.168.74.7:3306;}server {listen 5555;proxy_pass web01;}server {listen 6666;proxy_pass db01;}
}

此时用跳板机访问5的5555端口会直接访问8的22端口

此时访问5的6666端口会直接访问7的3306数据库

四层转发七层配置

 “四层入口负载均衡 → 七层负载均衡 → 后端应用服务器” 的经典多层架构,核心优势是:四层负责高并发流量分发(高效),七层负责应用层精细化控制(灵活),适合中大型集群场景

[root@siceng conf.c]# cat lb.conf 
stream {upstream webs {server 192.168.74.61:80 weight=4;server 192.168.74.62:80 weight=5 down;}server {listen 80;proxy_pass webs;}
}

tomcat图片分离

步骤一:下载安装启动tomcat

1:下载tomcat安装包到本地,并解压到指定目录

wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.49/bin/apache-tomcat-10.1.49.tar.gz --no-check-certificatetar xf apache-tomcat-10.1.49.tar.gz -C /usr/local/

2:创建软连接,安装运行环境java(8.0以上版本)

 yum install java-11-openjdk-devel -y

3:启动tomcat服务,查看8080端口

/usr/local/tomcat/bin/startup.sh
netstat -tunlp|grep 8080

步骤二:nginx实现代理tomcat进行图片拆分

web02配置反向代理到自身的8080端口

[root@web02 conf.d]# cat proxy.conf 
upstream tom {server 192.168.74.8:8080;
}server {listen 80;server_name test.tomcat.com;location / {proxy_pass http://tom;}}

此时访问192.168.74.8,就相当于访问192.168.74.8:8080

通过配置Nginx反向代理的locatoin,将tomcat的图片拆分

[root@web02 conf.d]# cat proxy.conf 
upstream tom {server 192.168.74.8:8080;
}server {listen 80;server_name test.tomcat.com;location / {proxy_pass http://tom;}# 如果访问.png.jpg...结尾的请求,则直接通过/code/images/返回给用户
location ~* \.(png|jpg|svg|mp4|mp3)$ {root /code/imagess;}}

由于现在还没有创建代码目录,所以访问tomcat网页时无法加载图片

创建代码目录,并把图片文件放进去,即可正常显示资源

mkdir imagess
cd /usr/local/tomcat/webapps/ROOT
cp *.svg *.png /code/imagess/
chown -R www.www /code/imagess/
systemctl restart nginx

通过负载均衡实现动静分离

1.配置WEB01的静态页面

[root@web01 conf.d]# cat static.conf 
server {listen 80;server_name static.com;location / {root /code/test01;index index.html;
}location ~* .*\.(jpg|png|gif)$ {root /code/images;}}创建代码目录,记得注意权限属主属组要对上
[root@web01 conf.d]#mkdir /code/images
[root@web01 conf.d]#cd /code/images
自己上传一张图片,命名为a.png

2.配置WEB02的动态资源

部署Tomcat
[root@web02 ~]#cd /usr/local/tomcat/webapps/ROOT/
[root@web02 ROOT]#cat test.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<HTML>
<HEAD>
<TITLE>oldboy JSP Page</TITLE>
</HEAD>
<BODY>
<%
Random rand = new Random();
out.println("<h1>oldboy随机数:<h1>");
out.println(rand.nextInt(99)+100);
%>
</BODY>
</HTML>

3.负载均衡集成动态和静态页面

[root@localhost conf.d]# cat test.conf 
upstream static {server 192.168.74.7:80;
}upstream java {server 192.168.74.8:8080;
}server {listen 80;server_name static.com;root /code/;index index.html;location ~* \.(jpg|png|gif)$ {proxy_pass http://static;proxy_set_header Host $http_host;
}location ~ \.jsp {proxy_pass http://java;proxy_set_header Host $http_host;}
}

4.创建代码目录:集成动静态数据

[root@lb01 conf.d]#mkdir /code
[root@lb01 conf.d]#cat /code/index.html
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>测试ajax和跨域访问</title>
<script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.js"></script>
</head>
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
type: "GET",
url: "http://static.com/test.jsp",
success: function(data){
$("#get_data").html(data)
},
error: function() {
alert("哎呦喂,失败了,回去检查你服务去~");
}
});
});
</script>
<body>
<h1>测试动静分离</h1>
<img src="http://static.com/a.png">
<div id="get_data"></div>
</body>
</html>

完成后访问: static.com 访问首页

部署业务中遇到的问题

1 AJAX 请求失败,很可能是跨域问题,index.html是在http://192.168.74.7(或其他域名)下访问,而请求的是http://www.static.com,则属于跨域,会被拦截。

2 百度CDN jquery 地址导入错误,导致网页无法正常打开

3 相关代码文件需要修改nginx属主数组

通过客户端信息(UA)调度到不同的代码

1.WEB01部署三个静态页面

[root@web01 conf.d]# cat sj.conf 
server {listen 9090;location / {root /code/android;index index.html;
}}
server {listen 9091;location / {root /code/iphone;index index.html;
}}server {
listen 9092;location / {root /code/pc;index index.html;
}}[root@web01 conf.d]# mkdir /code/{android,iphone,pc}
[root@web01 conf.d]# echo 您是用安卓手机访问的页面.... > /code/android/index.html
[root@web01 conf.d]# echo 您是用苹果手机访问的页面.... > /code/iphone/index.html
[root@web01 conf.d]# echo 您是用笔记本访问的页面.... > /code/pc/index.html[root@web01 conf.d]#chown -R www:www android/ iphone/ pc/
[root@web01 conf.d]#chmod -R 755 android/ iphone/ pc/

2.负载均衡判断客户来源信息转发到不同的业务

[root@localhost conf.d]# cat sj.conf 
upstream android {server 192.168.74.7:9090;
}upstream iphone {server 192.168.74.7:9091;
}upstream pc {server 192.168.74.7:9092;
}server {listen 80;server_name sj.123.com;charset 'utf-8';location / {
#如果客户端来源是Android则跳转到Android的资源;
if ($http_user_agent ~* "Android") {proxy_pass http://android;
}#如果客户端来源是Iphone则跳转到Iphone的资源;
if ($http_user_agent ~* "Iphone") {proxy_pass http://iphone;
}#如果客户端是IE浏览器则返回403错误;
if ($http_user_agent ~* "MSIE") {return 403;
}#默认跳转pc资源;proxy_pass http://pc;
}
}

浏览器访问测试:  sj.123.com

这是我的个人学习笔记,主要用于记录自己对知识点的理解和梳理。由于目前仍在学习探索阶段,内容中难免存在理解偏差或表述疏漏,恳请各位大佬不吝赐教,多提宝贵意见~ 若有不同看法,欢迎理性交流探讨,感谢包容与指正!

http://www.dtcms.com/a/606300.html

相关文章:

  • 深入理解C语言内存管理:从栈、堆到内存泄露与悬空指针
  • 如何免费做网站网页宁波模板建站哪家好
  • 最传统的网站推广手段公司网络优化方案
  • 广州市规划建设局网站佛山制作网站企业
  • mysql索引——理解索引机制及操作
  • 门户网站如何做seowordpress资源网模板
  • MySQL事务隔离级别:从并发困境到架构革新
  • 开发手机网站教程网页布局类型有哪些
  • 万峰科技.jsp网站开发四酷全书[m]seo收费还是免费
  • Linux:基础开发工具(二)
  • 小白教程:在 Windows 中启用 WSL 并安装 Linux 发行版
  • Linux RTC 驱动子系统详细实现方案
  • 主流服务器免费 SSL 证书部署手册 + 混合内容排查指南
  • Linux SNMP 团体号配置指定IP地址访问
  • 酒店移动网站建设方案wordpress添加导航栏
  • 大模型知识蒸馏实战:从Qwen-72B到Qwen-7B的压缩艺术
  • CMake Error at fc_base/gflags-src/CMakeLists.txt:73
  • 做一个网站需要多少人发布网站建设需求的经验
  • 网站开发多少工资做网站编辑好还是美工好
  • 上海网站建设公司四叶互联邗江区建设局网站
  • pytorch-张量转换
  • 推广型网站建设机构甘肃业聚质网络科技有限公司
  • 怎么让同一个局域网上的计算机看到我做的网站以公司名称为后缀的邮箱
  • Java接口与抽象类深度指南:从原理到实战
  • 人工智能备考——2.1.4题解
  • 做淘宝网站需要什么邵阳市城市建设网站
  • 告别闭门造车:用竞品ASO分析驱动应用下载转化
  • 【LeetCode】108. 将有序数组转换为二叉搜索树
  • 12.vector—string(下)
  • 具身智能数据采集全方案:动作捕捉技术驱动机器人拟人化进阶