bentools/proxy-server

一个简单的代理服务器,使用 Symfony 4.1 编写。

安装: 17

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 0

开放问题: 0

类型:项目


README

PPM Compatible

这个小巧的 Symfony 4.1 应用程序作为一个代理服务器运行。

我们假设您对 Symfony 有一定的了解,以便您可以根据自己的需求进行定制。

安装

克隆当前项目

composer create-project bentools/proxy-server:1.0.x-dev my-proxy && cd my-proxy

初始化您的环境变量

cp .env.dist .env

创建您的 PHP-PM 配置

./vendor/bin/ppm config

启动您的代理服务器

./vendor/bin/ppm start

示例配置

# .env

PROXY_BASE_URI=https://some-api.example.org
# ppm.json

{
    "bridge": "HttpKernel",
    "host": "proxied-api.my-server.com",
    "port": 8080,
    "workers": 6,
    "app-env": "prod",
    "debug": 0,
    "logging": 0,
    "static-directory": "",
    "bootstrap": "PHPPM\\Bootstraps\\Symfony",
    "max-requests": 1000,
    "max-execution-time": 0,
    "ttl": 0,
    "populate-server-var": true,
    "socket-path": ".ppm\/run\/",
    "pidfile": ".ppm\/ppm.pid",
    "reload-timeout": 30,
    "cgi-path": "\/etc\/php\/7.2.8\/bin\/php-cgi"
}

现在,如果您尝试访问 http://proxied-api.my-server.com:8080/some/endpoint?foo=bar,您将收到响应 https://some-api.example.org/some/endpoint?foo=bar

限流

通过您的环境变量启用 限流

# .env

PROXY_ENABLE_THROTTLING=true
PROXY_THROTTLING_MAX_REQUESTS=50
PROXY_THROTTLING_DURATION=10

这样,您将确保在10秒的时间窗口内最多只有50个请求被传输到真实主机。其他请求将被延迟。请求计数通过 Redis 共享,但您也可以实现自己的存储方式。