🚦 路碑 | 一个不局限于反向代理的反向代理服务器
Go to file
LittleSheep 6607e1dc5e
All checks were successful
release-nightly / build-docker (push) Successful in 1m53s
Status pages
2024-01-31 15:13:57 +08:00
.fleet Uses v2 configration schema 2024-01-25 00:09:39 +08:00
.gitea/workflows 💚 Bug fixes 2024-01-01 20:59:19 +08:00
.idea Status pages 2024-01-31 15:13:57 +08:00
.vscode Logger 2023-11-25 23:06:23 +08:00
config Add Helmet & Watermark 2024-01-31 00:57:47 +08:00
pkg Status pages 2024-01-31 15:13:57 +08:00
test :test_cube: Upgrade testing data schema to v2 2024-01-26 13:19:31 +08:00
.gitignore Support multiple certificate 2024-01-29 19:25:10 +08:00
Dockerfile RoadSign Sideload now built-in web ui 2024-01-01 18:16:57 +08:00
go.mod Status pages 2024-01-31 15:13:57 +08:00
go.sum Status pages 2024-01-31 15:13:57 +08:00
README.md Add proxy headers into request 2024-01-30 22:42:21 +08:00
settings.toml Add proxy headers into request 2024-01-30 22:42:21 +08:00

🚦 RoadSign

A blazing fast reverse proxy with a lot of shining features.

Features

  1. Reverse proxy
  2. WebSocket Support
  3. Static File Hosting
  4. Low Configuration
  5. Analytics and Metrics
  6. Integrate with CI/CD
  7. Web management panel (Work in progres for v2, available in v1)
  8. One-liner CLI
  9. Open-source and free
  10. Blazing fast

Important

Currently roadsign haven't supported for server-side events. We are working on it. At the same time, we don't support HTTP/2.0, here's the reason

How fast is it?

We use roadsign and nginx to host a same static file, and test them with go-wrk. Here's the result:

Software Total Requests Requests per Seconds Transfer per Seconds Avg Time Fastest Time Slowest Time Errors Count
Nginx 515749 4299.58 2.05MB 13.954846ms 0s (Cached) 410.6972ms 0
RoadSign 8905230 76626.70 30.98MB 783.016µs 28.542µs 46.773083ms 0
RoadSign w/ Prefork 4784308 40170.41 16.24MB 1.493636ms 34.291µs 8.727666ms 0

As result, roadsign undoubtedly is the fastest one.

It can be found that the prefork feature makes RoadSign more stable in concurrency. We can see this from the Slowest Time. At the same time, the Fastest Time is affected because reusing ports requires some extra steps to handle load balancing. Enable this feature at your own discretion depending on your use case.

More details can be found at benchmark's README.md

Installation

We strongly recommend you install RoadSign via docker compose.

version: "3"
services:
  roadsign:
    image: xsheep2010/roadsign:nightly
    restart: always
    volumes:
      - "./certs:/certs" # Optional, use for storage certificates
      - "./config:/config"
      - "./wwwroot:/wwwroot" # Optional, use for storage web apps
      - "./settings.yml:/settings.yml"
    ports:
      - "80:80"
      - "443:443"
      - "81:81"

After that, you can manage your roadsign instance with RoadSign CLI aka. RDC. To install it, run this command. (Make sure you have golang toolchain on your computer)

go install code.smartsheep.studio/goatworks/roadsign/pkg/cmd/rdc@latest

Usage

To use roadsign, you need to add a configuration for it. Create a file locally. Name whatever you like. And follow our documentation to write it.

After configure, you need sync your config to remote server. Before that, add a connection between roadsign server and rds cli with this command.

rdc connect <id> <url> <password>
# ID will allow you find this server in after commands.
# URL is to your roadsign server sideload api.
# Password is your roadsign server credential.
# ======================================================================
# !WARNING! All these things will storage in your $HOME/.roadsignrc.yaml
# ======================================================================

Then, sync your local config to remote.

rdc sync <server id> <region id> <config file>
# Server ID is your server added by last command.
# Site ID is your new site id or old site id if you need update it.
# Config File is your local config file path.

After a few seconds, your website is ready!