Nginx动静分离基本概述

动静分离,通过中间件将动态请求和静态请求进行分离
那为什么要通过中间件将动态请求和静态请求进行分离?减少不必要的请求消耗,同时能减少请求的延时。

Nginx动静分离场景实践

实验架构

实验环境

主机            服务                     服务                          地址
lb01        负载均衡                Nginx Proxy                 192.168.15.5
Web01       静态资源                Nginx Static                192.168.15.7
Web02       动态资源                Tomcat Server               192.168.15.8

静态资源配置

- web01服务器
1. 修改nginx配置文件
vim /etc/nginx/conf.d/ds_oldboy.conf
server {listen 80;server_name ds.oldboy.com;root /soft/code;index index.html;location ~* .*\.(png|jpg|gif)$ {           # 不区分大小写匹配~*,匹配优先级高于/root /soft/code/images;}
}2. 创建nginx配置文件指定存放数据的目录
mkdir -p /soft/code/images3. 创建nginx静态资源数据
echo "ceshi" > /soft/code/index.html
cd /soft/code/images
rz -E test.jpg4. 重启nginx服务
systemctl restart nginx- 测试
在本机添加域名解析
C:\Windows\System32\drivers\etc
在hosts文件添加域名解析
192.168.15.7            ds.oldboy.com   我们打开浏览器输入ds.oldboy.com,可以访问到ceshi。
输入ds.oldboy.com\test.jpg,可以访问到我们存放在/soft/code/images路径下的图片。

动态资源配置

- web02服务器
1. 下载并安装tomcat软件
yum -y install tomcat2. 创建tomcat软件指定的目录
mkdir /usr/share/tomcat/webapps/ROOT3. 利用tomcat软件,创建nginx动态文件
vim /usr/share/tomcat/webapps/ROOT/java_test.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<HTML><HEAD><TITLE>JSP Test Page</TITLE></HEAD><BODY><%Random rand = new Random();out.println("<h1>Random number:</h1>");out.println(rand.nextInt(99)+100);%></BODY>
</HTML>4. 重启tomcat服务
systemctl restart tomcat5. 查看tomcat默认监听的端口号
netstat -lntp
# tcp6       0      0 :::8080                 :::*                    LISTEN      2792/java  - 测试
我们打开浏览器,输入192.168.15.8:8080/java_test.jsp,可以正常访问到Random number:153(随机数)。

负载均衡配置

- lb01服务器
1. 修改nginx配置文件
vim /etc/nginx/conf.d/proxy_ds.conf
upstream static {server 172.16.1.7:80;
}upstream java {server 172.16.1.8:8080;
}server {listen 80;server_name ds.oldboy.com;location ~* .*\.(png|gif|jpg)$ {proxy_pass http://static;proxy_set_header Host $http_host;}location ~ \.jsp {proxy_pass http://java;}
}2. 重启nginx服务
nginx -t
systemctl restart nginx- 测试
在本机添加域名解析
C:\Windows\System32\drivers\etc
在hosts文件添加域名解析(注释掉本机其他ip与域名之间的对应关系)
192.168.15.5            ds.oldboy.com- 我们打开浏览器输入ds.oldboy.com/test.jpg,可以访问到我们在web01主机上传的图片,
- 输入ds.oldboy.com/java_test.jsp,可以访问到我们在web02主机的动态资源  Random number:142(随机数)

整合Nginx负载均衡代码

- lb01服务器
1. 修改nginx配置文件
vim /etc/nginx/conf.d/proxy_ds.conf
upstream static {server 172.16.1.7:80;
}upstream java {server 172.16.1.8:8080;
}server {listen 80;server_name ds.oldboy.com;root /soft/code;index index.html;location ~* .*\.(png|gif|jpg)$ {proxy_pass http://static;proxy_set_header Host $http_host;# 代理服务器匹配请求静态资源的时候,默认加上Host头信息(域名)}location ~ \.jsp {proxy_pass http://java;}
}2. 创建nginx文件指定存放静态文件的目录
mkdir -p /soft/code3. 创建nginx静态数据资源
vim /soft/code/index.html
<html lang="en">
<head><meta charset="UTF-8" /><title>测试动静分离</title><script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
</head>
<script type="text/javascript">
$(document).ready(function(){$.ajax({type: "GET",url: "http://ds.oldboy.com/java_test.jsp",success: function(data) {$("#get_data").html(data)},error: function() {alert("fail!!,请刷新再试");}});
});
</script><body><h1>测试动静分离</h1><h1>上面为静态图片,下面为动态页面</h1><img src="http://ds.oldboy.com/test.jpg"><div id="get_data"></div></body>
</html>4. 重启nginx服务
systemctl restart nginx- 测试
我们打开浏览器,输入ds.oldboy.com,可以同时访问到我们在web01主机上传的图片 + web02主机的动态资源Random number:133(随机数)。
我们在web01主机执行systemctl stop nginx。刷新浏览器,不影响web02主机的动态资源访问。

Nginx资源分离场景实践

Nginx通过负载均衡实现手机与PC调度至不同的后端节点应用案例

实验环境

- 根据iphone、安卓、pc跳转不同的页面环境规划
主机               服务                     外网ip                内网ip            端口
lb01            负载均衡                192.168.15.5        172.16.1.5          80
Web01           提供Android页面                         172.16.1.7          9090
Web01           提供iphone页面                          172.16.1.7          9091
web01           提供pc页面                              172.16.1.7          9092

配置后端web01节点的Nginx配置

1. 修改Nginx配置文件
vim /etc/nginx/conf.d/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;}
}2. 创建Nginx文件指定目录下的静态资源文件
mkdir /code/{android,pc,iphone}
echo "android" > /code/android/index.html
echo "pc" > /code/pc/index.html
echo "iphone" > /code/iphone/index.html3. 启动Nginx服务
nginx -t
systemctl restart nginx

配置lb01节点的负载均衡

1. 修改Nginx配置文件
vim /etc/nginx/conf.d/proxy_sj.conf
upstream android {server 172.16.1.7:9090;
}upstream iphone {server 172.16.1.7:9091;
}upstream pc {server 172.16.1.7:9092;
}server {listen 80;server_name sj.nana.com;location / {# 内置变量:$http_user_agent 来区分(电脑pc、手机 mobile、平板 pad)端的内容访问...if ($http_user_agent ~* "android") {proxy_pass http://android;}if ($http_user_agent ~* "iphone") {proxy_pass http://iphone;}if ($http_user_agent ~* "MSIE") {# 如果访问的浏览器是IE浏览器,返回403return 403;}proxy_pass http://pc;# 默认跳转至pc站点}
}2. 重启Nginx服务
nginx -t
systemctl restart nginx- 测试
在本机添加域名解析
C:\Windows\System32\drivers\etc
在hosts文件添加域名解析(注释掉本机其他ip与域名之间的对应关系)
192.168.15.5        sj.nana.com

测试

  • 打开百度的官网,输入F12。可以利用百度开发工具去访问我们的域名sj.nana.com,如下图所示:

京东跳转测试

我们基于上一个手机与PC调度测试,利用京东的站点跳转做一个测试

- lb01服务器
1. 修改Nginx配置文件
vim /etc/nginx/conf.d/proxy_sj.conf
upstream android {server 172.16.1.7:9090;
}upstream iphone {server 172.16.1.7:9091;
}upstream pc {server 172.16.1.7:9092;
}server {listen 80;server_name sj.nana.com;location / {if ($http_user_agent ~* "android|iphone") {rewrite ^/$ https://www.jd.com redirect;# 京东做的站点跳转}}
}#       location / {#               if ($http_user_agent ~* "android") {#                       proxy_pass http://android;
#               }#               if ($http_user_agent ~* "iphone") {#                        proxy_pass http://iphone;
#                }#                if ($http_user_agent ~* "MSIE") {#                       return 403;
#               }
#}2. 重启Nginx服务
nginx -t
systemctl restart nginx

测试

  • 打开百度的官网,输入F12。可以利用百度开发工具去访问我们的域名sj.nana.com,如下图所示

Nginx动静分离详解相关推荐

  1. Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解(1)

    大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...

  2. Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    标签:读写分离 页面缓存 URL重写 Nginx 反向代理 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://freeloda.bl ...

  3. Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解【转载】

    本文只为备份,以防失效.原文请看https://blog.51cto.com/freeloda/1288553 补充说明:部分图片为测试图片,未完全复制,参考文字描述即可. Nginx 反向代理.负载 ...

  4. Nginx反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...

  5. Nginx配置文件nginx.conf中文详解(转)

    ######Nginx配置文件nginx.conf中文详解######定义Nginx运行的用户和用户组 user www www;#nginx进程数,建议设置为等于CPU总核心数. worker_pr ...

  6. nginx.conf配置详解

    ######Nginx配置文件nginx.conf中文详解######定义Nginx运行的用户和用户组 user www www;#nginx进程数,建议设置为等于CPU总核心数. worker_pr ...

  7. nginx.conf 配置文件详解

    本文来说下nginx.conf 配置文件详解 文章目录 Nginx 配置文件概述 nginx.conf 配置文件 通用(这里是 windows 系统系 nginx1.14.2 下 nginx.conf ...

  8. Nginx配置文件中文详解

    ######Nginx配置文件nginx.conf中文详解######定义Nginx运行的用户和用户组 user www www;#nginx进程数,建议设置为等于CPU总核心数. worker_pr ...

  9. Nginx动静分离实现负载均衡

    转载自   Nginx动静分离实现负载均衡 前期准备 使用Debian环境.安装Nginx(默认安装),一个web项目,安装tomcat(默认安装)等. Nginx.conf配置 1 # 定义Ngin ...

最新文章

  1. CallContext和多线程
  2. 理解nodejs中函数的参数的来由
  3. 红杉中国合伙人刘星:新零售新在哪里?
  4. IDEA 中tomcat上面有个x 而且找不到配置tomcat的选项
  5. js学习总结--持续更新(2)
  6. python安装第三方扩展包_Python之安装第三方扩展库
  7. pytorch 学习1
  8. Java中遍历Map集合的3种方式
  9. 爬取豆瓣网新书传递信息,关系型数据库的储存
  10. 走进MSTP -- 4. OSN7500/7500II/3500/1500硬件速览
  11. Python笔记:第三方IP代理服务与爬虫IP代理
  12. 百姓基因:关于历史和名人形象的亲子DNA测试
  13. 软件架构风格介绍和总结
  14. xbox手柄电脑怎么测试软件,win10电脑怎么连接xbox手柄?win10电脑连接xbox手柄的详细步骤...
  15. 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2
  16. □ 影片名:《陈好-女人要爱自己》(7012) 在线播放
  17. 微信美团支付服务器异常怎么回事,无法使用微信支付?美团回应:支付系统出现异常 已全面恢复...
  18. javaS的tring和androidS的tring区别是什么?
  19. 保留指定小数位数js函数封装
  20. 下载landsat8 L2级产品的步骤

热门文章

  1. 注册网络安全等级测评工程师认证培训通知
  2. tkinter学习笔记
  3. JSDB.io - Javascript 的 Framework、Library 和 Tool 分類
  4. PFC2D学习笔记——刚性簇(clump)生成
  5. 初学者也能上手的Python数据分析案例
  6. c语言程序小灯从右向左闪烁,单片机控制LED灯点亮(C语言).PPT
  7. 【OJ每日一练】1199 - 计算并联电阻的阻值
  8. 分省份邮电业务总量统计(亿元)2011-2019
  9. SSM 农产品销售管理系统
  10. linux看zip的目录结构,无需解压如何查看一个归档或压缩文件的内容