18 个版本

0.0.13 2024年4月17日
0.0.12 2024年4月10日
0.0.11 2024年3月9日
0.0.8 2024年1月26日
0.0.1-alpha62023年9月26日

#164HTTP服务器

Download history 1/week @ 2024-04-22 7/week @ 2024-05-20

1,181 每月下载量

自定义许可

220KB
4.5K SLoC

BuildAndTest

ODD-BOX

一个简单易用的跨平台 玩具级 反向代理服务器,用于本地开发和实验。

它可以让你配置要运行的进程列表,并在它们自己的自定义主机名后托管它们。在首次访问时自动生成(自签名的)HTTPS证书(缓存在 .odd-box-cache 目录中)。

使用 'port' 环境变量为每个站点分配端口号。如果你的进程不支持使用端口环境变量,你可以传递进程的自定义参数或变量。

您可以使用 https://127.0.0.1/STARThttps://127.0.0.1/STOP 端点启用或禁用所有站点或特定站点,可选地使用查询参数 "?proc=my_site" 来停止或启动特定站点。(主要用于预构建脚本,其中您不需要在每次重建时手动停止和启动代理。站点在下一个请求时自动重新启动)

主要功能 & 目标

  • 跨平台(win/lin/osx)
  • 易于配置
  • 保持指定二进制文件的运行列表
  • 使用 PORT 环境变量进行路由
  • 允许设置进程特定和全局环境变量
  • 远程目标代理
  • 支持 HTTP/1.1 & HTTP2 的终止代理
  • HTTP/1 的 TCP 隧道
  • 通过 SNI 嗅探的 HTTPS/1 的 TCP 隧道
  • HTTP/2 通过 HTTP/1(h2c 升级)的 TCP 隧道
  • 通过终止代理的 H2C
  • 为所有托管进程自动生成自签名证书

终端用户界面

终端用户界面相当简单基本;它提供了一种简单的方法来查看哪些站点正在运行、日志输出以及所有当前活跃的连接。

odd-box v0.0.9: oddbox v0.0.9 的截图

配置

默认情况下,如果没有参数运行odd-box,它将首先尝试读取odd-box.toml,然后是Config.toml。您可以使用以下方式提供自定义配置路径:./odd-box "/tmp/my-file.toml"

有关如何配置oddbox的详细信息,请参阅此存储库中的odd-box-example-config.toml文件。

配置变量

变量 描述
$root_dir 解析为全局配置部分中设置的任何内容。
$cfg_dir 解析为读取配置toml文件的目录。

DNS

由于所有路由都基于主机名,因此您的客户端机器必须能够正确地将这些名称解析到代理服务器IP。如果您在本地机器上工作,可以通过向您的host文件添加条目,将每个域名指向127.0.0.1,或者使用类似localtest.me.me的方式配置托管站点,例如当配置my-first-site.localtest.me时。更高级的用户可能会使用他们自己的DNS服务器来设置这些域名。

安全提示

由于odd-box会启动您定义的二进制文件,因此您应该小心不要以提升/管理员模式运行odd-box。为了安全起见,使用非限制端口或按照以下操作系统的说明进行操作!

MacOS

不要使用sudo运行此应用程序。如果您想监听端口80,请将重定向配置到非限制端口(如8080),并将odd-box配置为使用该端口(port=8080)。

rdr pass on lo0 inet proto tcp from 127.0.0.1 to 127.0.0.1 port 80 -> 127.0.0.1 port 8080
sudo pfctl -ef pf-rules.conf

Linux

不要使用sudo运行此应用程序。相反,允许odd-box直接监听限制端口。

sudo setcap CAP_NET_BIND_SERVICE=+eip /path/to/odd-box
# (alternatively you could set up a redirect in your fw, similar to the MacOS section)

Windows

不要以管理员(提升)模式运行应用程序,而是允许您自己的账户使用限制端口。

netsh http add urlacl url=http://+:80/ user=DOMAIN\user
# (alternatively you could set up a redirect in your fw, similar to the MacOS section)

依赖项

~40–88MB
~1.5M SLoC