模拟 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文件也返回了,还有一个背景图片,这样就实现了静态资源的访问.

相关文章
|
5月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
5月前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何配置Web服务器(如Apache或Nginx)?
在Linux中,如何配置Web服务器(如Apache或Nginx)?
|
5月前
|
数据库连接 Apache Java
【独家揭秘】图书管理系统的奇幻之旅:一文看透Apache Wicket如何从想法萌芽到服务器上翩翩起舞?
【8月更文挑战第31天】本文通过实战案例,详细介绍从概念到部署的Apache Wicket应用开发全流程。以在线图书管理系统为例,涵盖应用概念定义、项目创建、架构设计、首页编写、数据库交互及应用部署等关键步骤。通过Maven或Gradle引入Wicket依赖,设计包结构,并使用JPA或Hibernate处理数据持久化。最终,将应用配置并部署到Tomcat或Jetty服务器,帮助你全面掌握Wicket开发技巧。
61 0
|
5月前
|
监控 Linux 测试技术
|
5月前
|
监控 安全 网络安全
如何保护 Apache 服务器的安全
【8月更文挑战第23天】
133 0
|
负载均衡 应用服务中间件 Apache
关于配置并发访问的服务器apache、nginx
一、 apache,nginx比较     关于Apache与Nginx的优势比较  (apache计算密集型   nginx io密集型  各有优势,不存在谁取代谁) 二、nginx 基于nginx的tomcat负载均衡和集群(超简单)  侧重点简单配置,缺点多人访问时,session ...
1274 0
|
1月前
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
350 33
The Past, Present and Future of Apache Flink
|
3月前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
960 13
Apache Flink 2.0-preview released
|
3月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
146 3
|
4月前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。

热门文章

最新文章

推荐镜像

更多