SVR.JS 一款基于 Node.js 运行的开源可配置网络服务器,专为应对高负载而设计

SrvJs

使用 SVR.JS 实现可靠、安全的托管,并轻松实现扩展。SVR.JS 是一款基于 Node.js 运行的开源可配置网络服务器,专为应对高负载而设计。

功能特性

  1. 静态文件处理
    • 静态文件服务(即使文件大小超过2GB)
    • 目录列表展示服务
    • 防范路径遍历攻击
    • 内容范围支持(针对非HTML静态文件;自SVR.JS 3.15.1起也支持HTML文件)
    • 从与SVR.JS安装目录不同的网站根目录提供服务
  2. 安全性
    • HTTPS支持
    • HTTP/2支持
    • 内置阻止列表
    • 防范HTTP认证暴力破解攻击(自SVR.JS 3.4.8起;默认启用)
    • 可隐藏服务器版本
    • OCSP装订支持(自SVR.JS 3.4.9起)
  3. 配置与定制
    • 通过config.json文件进行配置
    • 通过服务器端JavaScript和插件实现功能扩展
    • 能够提供自定义的错误页面
    • URL重写引擎
    • 由Node.js驱动的事件驱动架构以及集群功能
  4. 压缩与内容分发
    • Brotli、gzip和Deflate HTTP压缩(自SVR.JS 3.4.11起支持Brotli)
    • SNI(服务器名称指示)支持
    • ETag支持(自SVR.JS 3.6.1起)
    • 反向代理功能(需要SVR.JS的reverse - proxy - mod插件)
    • 正向代理功能(需要SVR.JS的forward - proxy - mod插件)
  5. 认证与访问控制
    • HTTP基本认证
  6. 网关接口
    • CGI(通用网关接口)支持(需要RedBrick插件)
    • SCGI(简单通用网关接口)支持(需要OrangeCircle插件)
    • JSGI(JavaScript网关接口)支持(需要YellowSquare插件)
    • PHP支持(使用RedBrick插件的PHP - CGI或使用GreenRhombus插件的PHP - FPM)
  7. 其他功能
    • 日志记录
    • 能够显示最初发起请求的IP地址(来自反向代理;通过X - Forwarded - For头信息)

安装方法

  1. 使用适用于GNU/Linux的SVR.JS安装程序(2024年4月5日及之后制作的安装包) SVR.JS主页提供了安装命令。首先,点击“GNU/Linux”按钮,然后将该标签页下方的命令复制到终端中。命令大致如下:sudo bash -c ”$(curl -fsSL https://downloads.svrjs.org/installer/svr.js.installer.linux.20250105.sh)” 。启动安装程序后,系统会提示您选择SVR.JS的安装类型。选择类型后,SVR.JS安装程序将安装Node.js、SVR.JS并创建SVR.JS服务。安装过程中,可能会提示您安装依赖项。安装完成后,服务器将在http://localhost启动。

文件结构如下: - /usr/lib/svrjs - SVR.JS安装目录 - /var/log/svrjs - SVR.JS日志目录 - /var/www/svrjs - SVR.JS网站根目录 - /etc/svrjs - config.json - SVR.JS配置文件(SVR.JS的config.json)

SVR.JS安装程序还会安装以下命令: - svrjs - loghighlight - SVR.JS日志高亮工具 - svrjs - logviewer - SVR.JS日志查看器 - svrpasswd - SVR.JS用户管理工具 - svrjs - updater - SVR.JS更新工具

  1. 使用适用于GNU/Linux的SVR.JS安装程序(2024年4月5日之前制作的安装包) SVR.JS现在有一个全新的适用于GNU/Linux的安装程序。首先,下载SVR.JS安装程序,然后解压SVR.JS安装程序的zip压缩包。解压安装程序后,下载SVR.JS的zip压缩包(非安装程序),将其复制到安装程序目录并重命名为“svrjs.zip”。然后使用sudo bash installer.sh运行SVR.JS安装程序。启动安装程序后,系统会提示您选择操作系统类型(GNU/Linux发行版类型)。选择类型后,SVR.JS安装程序将安装Node.js、SVR.JS并创建SVR.JS服务。安装过程中,可能会提示您安装依赖项。安装完成后,重启服务器操作系统,或者输入systemctl start svrjs 或 /etc/init.d/svrjs start来启动SVR.JS,从而在http://localhost获得一个Web服务器。

文件结构如下: - /usr/lib/svrjs - SVR.JS安装目录 - /var/log/svrjs - SVR.JS日志目录 - /var/www/svrjs - SVR.JS网站根目录 - /etc/svrjs - config.json - SVR.JS配置文件(SVR.JS的config.json)

SVR.JS安装程序还会安装以下命令: - svrjs - loghighlight - SVR.JS日志高亮工具 - svrjs - logviewer - SVR.JS日志查看器 - svrpasswd - SVR.JS用户管理工具

  1. 使用适用于Windows Server的SVR.JS安装程序 SVR.JS主页提供了安装命令。首先,点击“Windows Server”按钮,然后将该标签页下方的命令复制到命令提示符中。命令大致如下:powershell -c “irm https://downloads.svrjs.org/installer/svr.js.installer.windows.20250105.ps1 | iex” 。启动安装程序后,系统会提示您选择SVR.JS的安装类型。选择类型后,SVR.JS安装程序将安装Node.js、SVR.JS并创建SVR.JS服务。安装过程中,可能会提示您安装依赖项。安装完成后,服务器将在http://localhost启动。

文件结构如下: - %SystemDrive%\svrjs\svrjs - SVR.JS安装目录 - %SystemDrive%\svrjs\wwwroot - SVR.JS网站根目录

  1. 使用create - svrjs - server工具 要使用create - svrjs - server安装SVR.JS,首先使用npm install -g svrjs安装该工具。然后创建一个将包含SVR.JS的目录。将工作目录切换到新目录,然后运行以下命令之一:
    • create - svrjs - server lts - 最新的SVR.JS长期支持版本
    • create - svrjs - server latest - 最新的SVR.JS版本
    • create - svrjs - server 3.6.1 - SVR.JS 3.6.1版本(将3.6.1替换为您想要的版本)

如果您使用的是低于2.1.2版本的Deno,创建svr.cjs文件并包含以下内容:

require("./svr.js");

对logviewer.cjs、loghighlight.cjs和svrpasswd.cjs文件重复此过程,将svr.js替换为相应的带.js扩展名的脚本名称。

将SVR.JS下载并安装到工作目录后,如果是SVR.JS 3.x版本,运行node svr.js;如果是更早版本,运行node svr_new.js;如果您使用的是Bun而不是Node.js,则运行bun run svr.js;如果您使用的是2.1.2或更高版本的Deno,则运行deno run -A —unstable - delect - cjs svr.js;如果您使用的是更低版本的Deno,则运行deno run -A svr.cjs。

然后您将看到类似以下的消息:

解压模块...
删除SVR.JS存根...
解压SVR.JS...
重新启动SVR.JS以获取服务器界面。

再次运行此命令后,您将在http://localhost获得一个Web服务器。

  1. 使用Docker 要通过Docker安装SVR.JS,首先使用docker pull svrjs/svrjs命令拉取镜像,如果您希望安装SVR.JS的长期支持版本,则使用docker pull svrjs/svrjs:lts命令。然后使用docker run —name mysvrjs -d -p 80:80 —restart=always svrjs/svrjs命令创建并启动Docker容器(将mysvrjs替换为所需的Docker容器名称)。文件结构与通过SVR.JS安装程序安装时相同。安装完成后,服务器将在http://localhost启动。

  2. 手动安装 要手动安装SVR.JS,首先解压从SVR.JS下载页面下载的SVR.JS zip压缩包。然后将工作目录更改为包含SVR.JS脚本存根的目录。

如果您使用的是低于2.1.2版本的Deno,创建svr.cjs文件并包含以下内容:

require("./svr.js");

对logviewer.cjs、loghighlight.cjs和svrpasswd.cjs文件重复此过程,将svr.js替换为相应的带.js扩展名的脚本名称。

如果是SVR.JS 3.x版本,运行node svr.js;如果是更早版本,运行node svr_new.js;如果您使用的是Bun而不是Node.js,则运行bun run svr.js;如果您使用的是2.1.2或更高版本的Deno,则运行deno run -A —unstable - delect - cjs svr.js;如果您使用的是更低版本的Deno,则运行deno run -A svr.cjs。

然后您将看到类似以下的消息:

Decompressing modules...
Deleting SVR.JS stub...
Decompressing SVR.JS...
Restart SVR.JS to get server interface.

再次运行此命令后,您将在http://localhost获得一个Web服务器,界面如下:

安装后

当您访问localhost时,页面将如下所示:

如果您看到此页面,则表明SVR.JS安装成功。现在,您可以用自定义页面替换默认的服务器页面(index.html、tests.html、licenses、serverSideScript.js),并删除默认模块!如果您没有看到此页面,则说明安装SVR.JS时出现了问题。

Publish on 2025-01-08,Update on 2025-02-10