模拟 Apache 服务器|学习笔记

简介: 快速学习模拟 Apache 服务器

开发者学堂课程【Node.js 入门与实战模拟Apache服务器】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/588/detail/8264


模拟Apache服务器


只是一个index.html带了一个图片跟一个css,如果每一个文件都带很多个图片跟css,按照之前的方式写,服务器很耗时。

所以说要解决这个问题,这个问题就是网页中带了一堆静态资源,可以用简单的方式使用,无论是css,图片都是静态资源,只要是静态资源可以放在同一个目录之下,或者放在几个目录之下也是可以。

在网站目录下建一个public文件夹,这些静态资源例如css、图片、js文件放在这个目录之下,只要用户访问这个目录下任何一个资源,直接根据你找这个资源的路径,访问什么资源,直接拼上这个路径,在磁盘上直接返回这个文件,省去了一些复杂的判断,直接用请求,请求css下的index.css,就用网站当前目录下的pubilc目录,所有的静态资源放在这个目录,用这个目录拼上请求资源的路径,比如拼上css下的.css,刚好这个路径找到对应的文件,找到之后,直接返回,这样就省去了一堆if else的判断,要实现这个需求就得使用到Apache,模拟Apache服务器,发现,启动Apache,把所有的静态资源放到同一个目录之下,就会自动返回。

打开inedx.html文件的源代码,文件里有链入css文件,anoceanofsky.css这个css文件里有图片,

模拟Apache服务器步骤

App.js

模拟服务器

// 加载 http模块

var http = require( ‘http’);

var http = require( ‘path’);

var fs=require(‘fs’);

var mime = require(‘mime’);

// 创建服务

http.createServer(function (req, res) {

// 所有的静态资源都是在public这个目录下

// 1.获取用户请求的路径

// req.url

// /css/index.css

// /images/index.png

//  2.获取pubilc目录的完整路径

var publicDir = path.join(__dirname,public’);// apache这个目录

//  3.根据public 的路径和用户请求的路径,最终计算出用户的静态资源的完整路径 Apache\public\abc\xxx\css\index.css,跟publi拼起来,就是完整的路径,

var filename=path.join(pubicDir,req.url);

//  Console.log(filename);//启动这个服务,当访问根目录的时候,

// 4.根据文件的完整路径去读取该文件 ,如果读取到了,则把文件返回给用户,如果读取不到,则返回404

fs.readFile(filename,function(argument) {

// body...

if (err) {

res.end(‘文件不存在404‘);

} else {

 // 通过第三方模块mine,来判断不同的资源对应的Contnet-Type的类型

res.setHeader(‘Contnet-Type’,mime.getType(filename));

//根据请求路径,跟public拼接一下,如果找到了,就读取返回,如果没找到就404返回,这样还是存在问题,用户请求的可能是css,可能是图片,可能是index这个静态文件,什么文件都有可能,返回文件要设置contnet-type,如果读取的是图片,图片也分png,jpg,或者说是word文件,当用户请求不同的资源的时候,根据用户请求文件的后缀名称获取对应的contnet-type类型,mine这个模块怎么使用,首先 npm install mine,安装完毕之后加载这个模块get type就可以了,以前是lookup方法,或者可以反过来,给contnet-type,对应的类型是什么,两个方法都有

安装成功以后,在代码里加载这个模块,安装完成之后多了一个noed_modules,在这个文件夹下面就有mine模块,

// 如果找到了用户要读取的文件,那么直接把该文件返回给用户

res.end(data);

}

});

//  res.end(‘over’);

}).listen(9090, function () {

console.log( ‘http://localhost:9090');

});

image.png

测试执行代码,public目录下,有index.html,浏览器输入http://localhost:9090/index.html正常显示, 首先index.html的status值是200,里面又访问css文件,stylesheet并且这个css文件也返回了,还有一个背景图片,这样就实现了静态资源的访问.

相关文章
|
3月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
3月前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何配置Web服务器(如Apache或Nginx)?
在Linux中,如何配置Web服务器(如Apache或Nginx)?
|
3月前
|
数据库连接 Apache Java
【独家揭秘】图书管理系统的奇幻之旅:一文看透Apache Wicket如何从想法萌芽到服务器上翩翩起舞?
【8月更文挑战第31天】本文通过实战案例,详细介绍从概念到部署的Apache Wicket应用开发全流程。以在线图书管理系统为例,涵盖应用概念定义、项目创建、架构设计、首页编写、数据库交互及应用部署等关键步骤。通过Maven或Gradle引入Wicket依赖,设计包结构,并使用JPA或Hibernate处理数据持久化。最终,将应用配置并部署到Tomcat或Jetty服务器,帮助你全面掌握Wicket开发技巧。
51 0
|
3月前
|
监控 Linux 测试技术
|
3月前
|
监控 安全 网络安全
如何保护 Apache 服务器的安全
【8月更文挑战第23天】
91 0
|
3月前
|
存储 消息中间件 Java
Apache Flink 实践问题之原生TM UI日志问题如何解决
Apache Flink 实践问题之原生TM UI日志问题如何解决
46 1
|
1月前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
631 13
Apache Flink 2.0-preview released
|
1月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
73 3
|
2月前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。
|
3月前
|
消息中间件 监控 数据挖掘
基于RabbitMQ与Apache Flink构建实时分析系统
【8月更文第28天】本文将介绍如何利用RabbitMQ作为数据源,结合Apache Flink进行实时数据分析。我们将构建一个简单的实时分析系统,该系统能够接收来自不同来源的数据,对数据进行实时处理,并将结果输出到另一个队列或存储系统中。
237 2

推荐镜像

更多
下一篇
无影云桌面