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-alpha6 | 2023年9月26日 |
#164 在 HTTP服务器
1,181 每月下载量
220KB
4.5K SLoC
ODD-BOX
一个简单易用的跨平台 玩具级 反向代理服务器,用于本地开发和实验。
它可以让你配置要运行的进程列表,并在它们自己的自定义主机名后托管它们。在首次访问时自动生成(自签名的)HTTPS证书(缓存在 .odd-box-cache 目录中)。
使用 'port' 环境变量为每个站点分配端口号。如果你的进程不支持使用端口环境变量,你可以传递进程的自定义参数或变量。
您可以使用 https://127.0.0.1/START 和 https://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:
配置
默认情况下,如果没有参数运行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