Nginx动静分离详解
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动静分离详解相关推荐
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解(1)
大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
标签:读写分离 页面缓存 URL重写 Nginx 反向代理 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://freeloda.bl ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解【转载】
本文只为备份,以防失效.原文请看https://blog.51cto.com/freeloda/1288553 补充说明:部分图片为测试图片,未完全复制,参考文字描述即可. Nginx 反向代理.负载 ...
- Nginx反向代理、负载均衡、页面缓存、URL重写及读写分离详解
大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...
- Nginx配置文件nginx.conf中文详解(转)
######Nginx配置文件nginx.conf中文详解######定义Nginx运行的用户和用户组 user www www;#nginx进程数,建议设置为等于CPU总核心数. worker_pr ...
- nginx.conf配置详解
######Nginx配置文件nginx.conf中文详解######定义Nginx运行的用户和用户组 user www www;#nginx进程数,建议设置为等于CPU总核心数. worker_pr ...
- nginx.conf 配置文件详解
本文来说下nginx.conf 配置文件详解 文章目录 Nginx 配置文件概述 nginx.conf 配置文件 通用(这里是 windows 系统系 nginx1.14.2 下 nginx.conf ...
- Nginx配置文件中文详解
######Nginx配置文件nginx.conf中文详解######定义Nginx运行的用户和用户组 user www www;#nginx进程数,建议设置为等于CPU总核心数. worker_pr ...
- Nginx动静分离实现负载均衡
转载自 Nginx动静分离实现负载均衡 前期准备 使用Debian环境.安装Nginx(默认安装),一个web项目,安装tomcat(默认安装)等. Nginx.conf配置 1 # 定义Ngin ...
最新文章
- CallContext和多线程
- 理解nodejs中函数的参数的来由
- 红杉中国合伙人刘星:新零售新在哪里?
- IDEA 中tomcat上面有个x 而且找不到配置tomcat的选项
- js学习总结--持续更新(2)
- python安装第三方扩展包_Python之安装第三方扩展库
- pytorch 学习1
- Java中遍历Map集合的3种方式
- 爬取豆瓣网新书传递信息,关系型数据库的储存
- 走进MSTP -- 4. OSN7500/7500II/3500/1500硬件速览
- Python笔记:第三方IP代理服务与爬虫IP代理
- 百姓基因:关于历史和名人形象的亲子DNA测试
- 软件架构风格介绍和总结
- xbox手柄电脑怎么测试软件,win10电脑怎么连接xbox手柄?win10电脑连接xbox手柄的详细步骤...
- 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2
- □ 影片名:《陈好-女人要爱自己》(7012) 在线播放
- 微信美团支付服务器异常怎么回事,无法使用微信支付?美团回应:支付系统出现异常 已全面恢复...
- javaS的tring和androidS的tring区别是什么?
- 保留指定小数位数js函数封装
- 下载landsat8 L2级产品的步骤