iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >使用nodejs、Python写的一个简易HTTP静态文件服务器
  • 855
分享到

使用nodejs、Python写的一个简易HTTP静态文件服务器

静态简易文件服务器 2022-06-04 01:06:34 855人浏览 泡泡鱼
摘要

日常开发过程中,我们经常需要修改一些放在 CDN 上的静态文件(如 javascript、CSS、html 文件等),这个过程中,我们希望能有一种方式将线上 CDN 的目录映射为本地硬盘上的某个目录,这样,

日常开发过程中,我们经常需要修改一些放在 CDN 上的静态文件(如 javascriptCSShtml 文件等),这个过程中,我们希望能有一种方式将线上 CDN 的目录映射为本地硬盘上的某个目录,这样,当我们在本地修改了某个文件时,不需要发布,刷新后马上能看到效果。

比如,我们的 CDN 域名是:Http://a.mycdn.com,本地对应的目录是:D:workassets,我们希望所有对 http://a.mycdn.com

var http = require("http"), url = require("url"), path = require("path"), fs = require("fs"), local_folders, base_url;

local_folders = [ // 本地路径,代理将在这个列表中的目录下寻找文件,如果没有找到则转到线上地址 "D:/work/assets" ]; base_url = "http://10.232.133.214"; // 线上路径,如果找不到文件,则转向到这个地址

function loadFile(pathname, response) { var i, l = local_folders.length, fn;

console.log("try to load " + pathname);

for (i = 0; i < l; i++) {

fn = local_folders[i] + pathname; if (path.existsSync(fn) && fs.statSync(fn).isFile()) { fs.readFile(fn, function (err, data) { response.writeHead(200); response.write(data); response.end(); });

return; }

}

response.writeHead(302, { "Location":base_url + pathname }); response.end(); }

http.createServer( function (request, response) {

var req_url = request.url, pathname;

// 处理类似 http://a.tbcdn.cn/??p/global/1.0/global-min.css,tbsp/tbsp.css?t=20110920172000.css 的请求 pathname = req_url.indexOf("??") == -1 ? url.parse(request.url).pathname : req_url; console.log("Request for '" + pathname + "' received."); loadFile(pathname, response);

}).listen(80);


注意将上面的 local_folders 和 base_url 两个变量的值修改为你需要的值。将这个文件保存下来,比如保存为 local-cdn-proxy.js,然后在命令行里执行“node local-cdn-proxy.js”,本地服务器就运行起来了,当然,别忘了绑定 hosts 。

当通过 http 访问一个路径时,上面的脚本会先在本地对应的目录下查找,找到则返回对应文件的内容,找不到则直接 302 跳转到线上对应的地址。对于找不到的情况,还有一种处理办法是由本地服务器从线上下载对应的内容并返回,不过对这个需求来说,302 跳转就足够了。

除了 nodejs 版本,我也写了一个 python 的版本:

# -*- coding: utf-8 -*-

#

# author: oldj

#

import os import Basehttpserver

LOCAL_FOLDERS = [ "D:/work/assets" ] BASE_URL = "http://10.232.133.214"

class WEBRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):

def do_GET(self): print "Request for '%s' received." % self.path for folder in LOCAL_FOLDERS: fn = os.path.join(folder, self.path.replace("/", os.sep)[1:]) if os.path.isfile(fn): self.send_response(200) self.wfile.write(open(fn, "rb").read()) break

else: self.send_response(302) self.send_header("Location", "%s%s" % (BASE_URL, self.path))

server = BaseHTTPServer.HTTPServer(("0.0.0.0", 80), WebRequestHandler) server.serve_forever()


可以看到,Python 版本的代码比 nodejs 版本的精简了很多。

上面的两段代码的功能还相对比较简单,比如没有输出内容的 MIME-Type、Content-Length 等头信息,对可能的阻塞操作(如读取文件超时等)也没有做特别的处理。对于本地开发环境来说,它们已经是可以工作的版本了,你也可以继续扩展这两个脚本,以便满足更多的需求。

--结束END--

本文标题: 使用nodejs、Python写的一个简易HTTP静态文件服务器

本文链接: https://www.lsjlt.com/news/11663.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用nodejs搭建一个简易HTTP服务的实现示例
    目录先搭建一个简单的HTTP服务根据不同的请求地址返回不同的信息获取请求参数实现服务端设置(跨域)cookie和读取客户端发送的cookie本文只使用nodejs的http模块搭建一...
    99+
    2024-04-02
  • 使用Python编写一个简易客服机器人
    使用Python编写一个简易客服机器人?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、货物信息储存到MySQL数据库中在现实情景中,购物信息的数据一般会储存到...
    99+
    2023-06-14
  • 【Python】快速创建一个简易 HTTP 服务器(http.server)
    引言 http.server 是 socketserver.TCPServer 的子类,它在 HTTP 套接字上创建和监听,并将请求分派给处理程序。本文是关于如何使用 Python 的 http.s...
    99+
    2023-09-28
    python http server
  • 如何使用Node写静态文件服务器
    目录背景功能介绍代码实现基础代码实现大文件优化Stream减少文件传输带宽使用浏览器缓存什么是Etag总结背景 作为前端工程师,我想大家一定对静态文件服务器不会陌生。所谓的静态文件服...
    99+
    2024-04-02
  • nodejs如何创建简易web服务器与文件读写
    小编给大家分享一下nodejs如何创建简易web服务器与文件读写,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!web服务器至少有...
    99+
    2024-04-02
  • 基于Python编写一个简单的http服务器
    目录什么是http分析http请求报文和响应报文格式手写一个简单的http服务器总结本篇文章的python版本为: 什么是http http是一个应用层协议,准确的来说是基于TCP...
    99+
    2023-05-17
    Python实现http服务器 Python http服务器 Python 服务器
  • 如何使用Python实现一个简易版Web服务器
    今天小编给大家分享一下如何使用Python实现一个简易版Web服务器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、简介我...
    99+
    2023-07-05
  • 教你使用Python实现一个简易版Web服务器
    目录一、简介二、Web服务器基础概念三、Python网络编程库四、实现简易Web服务器1.使用socket库创建服务器套接字。2.绑定服务器IP地址和端口。3.监听客户端连接。4.接...
    99+
    2023-05-14
    Python实现简易服务器 Python实现Web服务器
  • linux中怎么即时设置一个静态文件服务器
    这篇文章主要为大家展示了“linux中怎么即时设置一个静态文件服务器”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中怎么即时设置一个静态文件服务器”这篇文章吧。曾经想通过网络共享你的文...
    99+
    2023-06-16
  • 如何使用Nodejs搭建服务器访问html、css、JS等静态资源文件
    这篇文章给大家分享的是有关如何使用Nodejs搭建服务器访问html、css、JS等静态资源文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。第一步,俗话说的好,工欲善其事,必先...
    99+
    2024-04-02
  • 如何使用Node.js搭建一个静态Web服务器
    这篇文章主要介绍了如何使用Node.js搭建一个静态Web服务器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用Node.js搭建一个静态Web服务器文章都会有所收获,下...
    99+
    2024-04-02
  • 如何使用Node.js创建一个简单的HTTP服务器
    这篇文章主要介绍“如何使用Node.js创建一个简单的HTTP服务器”,在日常操作中,相信很多人在如何使用Node.js创建一个简单的HTTP服务器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方...
    99+
    2024-04-02
  • 如何使用Node.js实现一个静态资源服务器
    今天就跟大家聊聊有关如何使用Node.js实现一个静态资源服务器,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。项目涉及...
    99+
    2024-04-02
  • 怎么使用Python编写一个简单的垃圾邮件分类器
    这篇文章主要介绍“怎么使用Python编写一个简单的垃圾邮件分类器”,在日常操作中,相信很多人在怎么使用Python编写一个简单的垃圾邮件分类器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Pytho...
    99+
    2023-07-06
  • 浅析用Node创建一个简单的HTTP服务器
    怎么使用NodeJS创建HTTP服务器?下面本篇文章给大家介绍一下使用Node创建一个简单的HTTP服务器的方法,希望对大家有所帮助!1. 使用Node.js直接运行JavaScript脚本node.js基于Chrome的v8引擎运行js代...
    99+
    2023-05-14
    Node.js node
  • 怎么用Node创建一个简单的HTTP服务器
    这篇文章主要介绍“怎么用Node创建一个简单的HTTP服务器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用Node创建一个简单的HTTP服务器”文章能帮助大家解决问题。1. 使用Node.js...
    99+
    2023-07-04
  • 如何使用 Chi 路由器提供静态文件夹服务
    php小编苹果为您介绍如何使用Chi路由器提供静态文件夹服务。Chi是一个轻量级的Go语言Web框架,它提供了简洁、高效的路由功能。通过Chi,我们可以轻松地搭建一个静态文件夹服务,将...
    99+
    2024-02-09
    go语言
  • 如何使用Nginx搭建详细的静态文件服务器【经典】
    Nginx是一种强大的Web服务器,可以用于托管静态文件。本文将详细介绍如何使用Nginx搭建一个静态文件服务器,使您能够轻松地浏览目录、导航子目录和文件,并通过浏览器下载文件。 以下是使用Nginx...
    99+
    2023-10-06
    nginx java
  • 使用python实现一个简单ping pong服务器
    目录依赖环境客户端/服务器架构介绍什么是客户端/服务器架构如何使用客户端/服务器架构缺点python socket编程写一个最简单的ping/pong服务总结依赖环境 本篇文章所依赖...
    99+
    2023-05-16
    python ping pong服务器 python ping pong
  • 基于Python编写一个简单的服务注册发现服务器
    目录案例展示案例测试如何来写一个注册发现服务器服务器发现核心是啥报文如何定义如何从tcp流中获取记录编写注册发现服务器如何从tcp流中读取数据数据包如何区分类型服务注册服务销毁服务查...
    99+
    2023-05-16
    Python编写服务注册发现服务器 Python服务注册发现服务器 Python 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作