https://github.com/bpolaszek/proxy-server
A simple proxy server, written in Symfony 4.1.
https://github.com/bpolaszek/proxy-server
Last synced: 11 months ago
JSON representation
A simple proxy server, written in Symfony 4.1.
- Host: GitHub
- URL: https://github.com/bpolaszek/proxy-server
- Owner: bpolaszek
- Created: 2018-08-30T13:51:08.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-09-17T15:15:37.000Z (over 7 years ago)
- Last Synced: 2025-01-10T09:59:31.307Z (about 1 year ago)
- Language: PHP
- Size: 13.7 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://github.com/php-pm/php-pm)
This small Symfony 4.1 application works as a proxy.
We assume you have a minimal knowledge of Symfony to customize it to your needs.
Installation
------------
Clone the current project
```bash
composer create-project bentools/proxy-server:1.0.x-dev my-proxy && cd my-proxy
```
Init your environment variables
```bash
cp .env.dist .env
```
Create your [PHP-PM](https://github.com/php-pm/php-pm) config
```bash
./vendor/bin/ppm config
```
Serve your proxy
```bash
./vendor/bin/ppm start
```
Example configuration
---------------------
```bash
# .env
PROXY_BASE_URI=https://some-api.example.org
```
```json
# 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"
}
```
Now if you try to access `http://proxied-api.my-server.com:8080/some/endpoint?foo=bar` you'll get the response of `https://some-api.example.org/some/endpoint?foo=bar`.
Throttling
----------
Enable [throttling](https://github.com/bpolaszek/guzzle-throttle-middleware) via your environment variables:
```bash
# .env
PROXY_ENABLE_THROTTLING=true
PROXY_THROTTLING_MAX_REQUESTS=50
PROXY_THROTTLING_DURATION=10
```
This way you'll ensure than a maximum of 50 requests will be transferred to the real host in a 10 seconds window. All other requests will be delayed.
Counting requests is shared via Redis, but feel free to implement a storage of your own.