Nginx的应用之动静分离

Nginx 的动静分离

我们通过中间件将动态请求和静态请求进行分离,减少了不必要的请求消耗和延时。

动静分离后,即使动态服务不可用,但静态资源不会受到影响。

应用实例

1、准备环境

系统角色主机名IP服务
CentOS 7.2反向代理Nginx_Proxy192.168.1.10Nginx:v1.16.1
CentOS 7.2静态资源Nginx_Static192.168.1.11Nginx:v1.16.1
CentOS 7.2动态资源Tomcat_Server192.168.1.12Tomcat/7.0.76

2、配置服务器

2.1、在Nginx Static主机中配置静态资源(以图片为例)

[root@Nginx_Static]# vim /etc/nginx/conf.d/static.conf
server {listen 80;server_name static.com;root /data/www/static;index index.html;location ~* .*\.(png|jpg|gif)$ {root /data/www/static/images;}
}
#准备存放图片的目录及图片
[root@Nginx_Static]# mkdir -pv /data/www/static/images
[root@Nginx_Static]# wget -O /data/www/static/images/nginx.png http://nginx.org/nginx.png
[root@Nginx_Static]# systemctl restart nginx

2.2、在 Tomcat_Server主机中配置动态资源(以随机数为例)

#安装Tomcat,并编辑随机数的jsp文件
[root@Tomcat_Server]# yum -y install tomcat
[root@Tomcat_Server]# mkdir /usr/share/tomcat/webapps/ROOT
[root@Tomcat_Server]# vim /usr/share/tomcat/webapps/ROOT/java.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>#重启tomcat服务
[root@Tomcat_Server]# 

2.3、在Nginx_Proxy主机上配置代理,实现访问jsp和png

[root@Nginx_Proxy]# vim /etc/nginx/conf.d/proxy.conf
upstream static {server 192.168.1.11:80;
}
upstream java {server 192.168.1.12:8080;
}server {listen 80;server_name proxy.com;location / {root /data/www/whole;index index.html;}location ~ .*\.(png|jpg|gif)$ {proxy_pass http://static;}location ~ .*\.jsp$ {proxy_pass http://java;}
}
#重启nginx
[root@Nginx_Proxy]# systemctl restart nginx 

2.4、通过代理服务器测试访问动态及静态资源

1562333-20190826232727523-1191445210.png

1562333-20190826232747036-1075673509.png

2.5、在Nginx_Proxy主机上将动态和静态资源合并为html文件

[root@Nginx_Proxy]# mkdir /data/www/whole
[root@Nginx_Proxy]# vim /data/www/whole/index.html
<html lang="en">
<head><meta charset="UTF-8" /><title>测试ajax和跨域访问</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://proxy.com/java.jsp",success: function(data) {$("#get_data").html(data)},error: function() {alert("fail!!,请刷新再试!");}});
});
</script><body><h1>测试动静分离</h1><img src="http://proxy.com/nginx.png"><div id="get_data"></div></body>
</html>

2.6、使用浏览器测试访问,动态及静态资源能否加载在一个html文件中

1562333-20190826232807415-1860252604.png

2.7、关闭静态资源的nginx服务后,发现静态内容无法访问,但动态内容可以正常浏览

1562333-20190826232817252-1655158987.png

2.8、关闭动态资源的tomcat服务后,发现动态内容无法访问,但静态内容可以正常浏览

1562333-20190826232827788-1380633641.png

转载于:https://www.cnblogs.com/Smbands/p/11415727.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410046.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[html] 说说你对网格布局的理解

[html] 说说你对网格布局的理解 目前是最强大的布局方案&#xff0c;但兼容性差个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

【SQLSERVER】SQL SERVER 2008筛选表报错

【SQLSERVER】SQL SERVER 2008筛选表报错 错误详细&#xff1a;标题: Microsoft SQL Server Management Studio------------------------------无法为该请求检索数据。 (Microsoft.SqlServer.Management.Sdk.Sfc)有关帮助信息&#xff0c;请单击: http://go.microsoft.com/fwli…

安装ipython失败 in error catcher_疯狂的Python:零基础小白入门帖子详情 - 网易云课堂...

C:\Users\David>pip install IpythonCollecting IpythonUsing cached ipython-6.1.0-py3-none-any.whlCollecting pygments (from Ipython)Downloading Pygments-2.2.0-py2.py3-none-any.whl (841kB)53% |█████████████████▏ | 450kB 3.3kB/…

3d打印英语文献_锐医学院 | 只需10分钟!解读康复医学文献+英语学习

文献解读英语学习只需10分钟锐医学院致力于专业康复教育培训同时&#xff0c;也在康复领域专家的合作下&#xff0c;一直在研究康复领域最前沿所取得的研究成果、存在的问题以及发展趋势进行系统和全面的叙述和评论与各领域康复专业人士分享。文献解读有助于发现前沿性问题&…

node.js通过回调函数获取异步函数的返回结果

html文件代码<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>我的node.js首页</title> </head> <body></body> </html> 通过buffer流读取html文件var fs require(fs);…

[html] 写页面布局时你有考虑过分辨率因素吗?还要考虑哪些因素呢

[html] 写页面布局时你有考虑过分辨率因素吗&#xff1f;还要考虑哪些因素呢 1.支持的最大和最小分辨率 2.流式布局还是响应式布局个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起…

StreamWriter打开文件报错:”不支持给定路径的格式。“

StreamWriter swnew StreamWriter(path,false,Encoding.Default);这段话出异常&#xff0c;查下来发现文件名中还有:号&#xff0c;把半角的:变成全角的&#xff1a;问题即可解决。 转载于:https://www.cnblogs.com/yanzhenan/archive/2012/02/29/2373511.html

bigdecimal 保留两位小数_一律使用 BigDecimal,避免后患?

你知道的越多&#xff0c;不知道的就越多&#xff0c;业余的像一棵小草&#xff01;你来&#xff0c;我们一起精进&#xff01;你不来&#xff0c;我和你的竞争对手一起精进&#xff01;编辑&#xff1a;业余草zhuanlan.zhihu.com/p/94144867推荐&#xff1a;https://www.xttbl…

tcp 四次挥手_tcp三次握手和四次挥手

SYN&#xff1a;一个很小的包&#xff0c;tcp的第一个包&#xff08;同步序列编号&#xff09;ACK:确认响应SYN、ACK:为1表示确认连接FIN表示关闭连接&#xff0c;PSH表示有 DATA数据传输&#xff0c;RST表示连接重置。Acknowledge number(ack)&#xff1a;确认号&#xff0c;大…

ssh登录服务器提示错误no hostkey alg

ssh登录服务器提示错误no hostkey alg ssh root192.168.1.100 -vvv提示失败&#xff1a;no hostkey alg 登录到192.168.1.100服务器 rm -rf /etc/ssh/ssh*key systemctl restart sshd #我还是移走了&#xff0c;没有删除。因为之前安装了telnet服务&#xff0c;因此不用担心连…

[html] 打印页面时怎样自定义打印页眉页脚或者去掉眉页脚?

[html] 打印页面时怎样自定义打印页眉页脚或者去掉眉页脚&#xff1f; <style type"text/css" media"print"> page { size: auto; /* auto is the initial value / margin: 0mm; / this affects the margin in the printer settings */ } </styl…

sqlite 的几点见解

这几天接触了sqlite数据库&#xff0c;开始不上手感觉太变态连DataTime数据类型的都不能返回一个DataSet。 但是在网上查了几天后才发现其实sqlite还是很容易上手的。 我说几点我预到的问题&#xff1a; 1&#xff0c;字段的自增我们在sqlite中的字段自增是把数据类型设为integ…

python正则匹配字符串中的数字_Python正则表达式匹配字符串中的数字

1.使用“\d”匹配全数字代码&#xff1a;import rezen "Arizona 479, 501, 870. Carlifornia 209, 213, 650."m re.findall("\d", zen)print(m)结果&#xff1a;[479, 501, 870, 209, 213, 650]但是上述这种方式也会引入非纯数据&#xff0c;例子如下&am…

node.js之文件读写模块,配合递归函数遍历文件夹和其中的文件

fs.stat会返回文件夹会文件的属性var fs require(fs); var wenwa function (pathname,callback) {fs.stat(pathname,function (err,data) {if(err) throw err;else{if(data.isDirectory()){var wenheichouwa function (callback){fs.readdir(pathname,function (err,fileor…

ms查约束具体代码_ECCV 2020附代码论文合集(CNN,图像分割)

ECCV 2020 共接受 1361 篇论文&#xff0c;涵盖了包括目标检测&#xff0c;语义分割&#xff0c;图像分类&#xff0c;点云&#xff0c;图像重建&#xff0c;神经网络模型等热门主题。对计算机视觉感兴趣的小伙伴们也许你们已经阅读完论文并对论文的内容跃跃欲试了吧&#xff0…

[html] 如何设置打印尺寸?

[html] 如何设置打印尺寸&#xff1f; media print { ... }个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

路径规划算法_自动驾驶汽车路径规划算法浅析

自动驾驶汽车的路径规划算法最早源于机器人的路径规划研究&#xff0c;但是就工况而言却比机器人的路径规划复杂得多&#xff0c;自动驾驶车辆需要考虑车速、道路的附着情况、车辆最小转弯半径、外界天气环境等因素。本文将为大家介绍四种常用的路径规划算法&#xff0c;分别是…

【转载】interpolation(插值)和 extrapolation(外推)的区别

根据已有数据以及模型&#xff08;函数&#xff09;预测未知区域的函数值&#xff0c;预测的点在已有数据范围内就是interpolation&#xff08;插值&#xff09;&#xff0c; 范围外就是extrapolation&#xff08;外推&#xff09;。 The Difference Between Extrapolation and…

vue computed使用_vue computed正确使用方式

最近面试中&#xff0c;遇到一个小伙子&#xff0c;谈到了vue中的 computed 和 watch 区别&#xff0c;最后得到了一个让我瞠目结舌的答案&#xff0c;只用 watch&#xff0c;从不用 computed 模板内的表达式非常便利&#xff0c;但是设计它们的初衷是用于简单运算的。在模板中…

[html] 如何设置打印尺寸?

[html] 如何设置打印尺寸&#xff1f; 用一个单独的Css文件设置打印样式个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题