PHPackages                             wakeworks/requestproxy - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. wakeworks/requestproxy

ActiveSilverstripe-vendormodule[HTTP &amp; Networking](/categories/http)

wakeworks/requestproxy
======================

Silverstripe 5 module allowing you to proxy requests from your visitors to other servers

2.0.0(1y ago)0951BSD-3-ClausePHP

Since Jul 5Pushed 1y ago1 watchersCompare

[ Source](https://github.com/wakeworks/RequestProxy)[ Packagist](https://packagist.org/packages/wakeworks/requestproxy)[ RSS](/packages/wakeworks-requestproxy/feed)WikiDiscussions main Synced yesterday

READMEChangelog (3)Dependencies (2)Versions (7)Used By (0)

RequestProxy for Silverstripe 5
===============================

[](#requestproxy-for-silverstripe-5)

[![Packagist Version](https://camo.githubusercontent.com/72c334bccbe331a3571d6653dbe761e60020fe20b22c57b172377b447aa9c234/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f77616b65776f726b732f7265717565737470726f78793f7374796c653d666c61742d737175617265)](https://camo.githubusercontent.com/72c334bccbe331a3571d6653dbe761e60020fe20b22c57b172377b447aa9c234/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f77616b65776f726b732f7265717565737470726f78793f7374796c653d666c61742d737175617265)[![GitHub](https://camo.githubusercontent.com/7080bec0601611bf6563148e6e86fa37ca5592b99212c9a635630a58a88e97c9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f77616b65776f726b732f5265717565737450726f78793f7374796c653d666c61742d737175617265)](https://camo.githubusercontent.com/7080bec0601611bf6563148e6e86fa37ca5592b99212c9a635630a58a88e97c9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f77616b65776f726b732f5265717565737450726f78793f7374796c653d666c61742d737175617265)

Introduction
------------

[](#introduction)

RequestProxy allows you to route a user's request through your server.

Imagine you want to use fonts from Adobe Typekit but your data protection officer tells you: "No communication to US companies under GDPR". Adobe doesn't allow self-hosting, so you can't use it normally. However, you could proxy the user's request through your server and return the font to the user without revealing their IP address.

Requirements
------------

[](#requirements)

- silverstripe/framework ^5.0
- php-curl extension

Installation
------------

[](#installation)

```
composer require wakeworks/requestproxy

```

Basic Configuration
-------------------

[](#basic-configuration)

```
WakeWorks\RequestProxy\RequestProxy:
  proxy_rules:
    link1: 'https://external/link/to/proxy'
    link2: 'https://external/link/to/proxy2'
```

Your links will now be available under `/_requestproxy/link1` and `/_requestproxy/link2`.

Usage
-----

[](#usage)

### Templates

[](#templates)

In Templates, use `$RequestProxy(link1)` to get the link

### Requirements

[](#requirements-1)

```
use SilverStripe\View\Requirements;
use WakeWorks\RequestProxy\RequestProxy;

$proxy_url = RequestProxy::get_proxy_url('link1');
Requirements::css($proxy_url);
```

Advanced Configuration
----------------------

[](#advanced-configuration)

Normally, RequestProxy will forward the Content-Type header and the returned HTTP status code. You can, however, force other ones.

```
WakeWorks\RequestProxy\RequestProxy:
  proxy_rules:
    link3:
      url: 'https://external/link/to/proxy'
      content_type: 'text/css'
      status_code: 201
```

Rate Limiting
-------------

[](#rate-limiting)

Proxying requests can be dangerous, e.g. users could in theory make you DDoS the target service.

RequestProxy implements Silverstripe's RateLimitMiddleware to counter that. It allows 10 requests per link per minute as default value. If you want to change that value, you can change its configuration:

```
---
Name: ratelimit
After:
  - 'requestproxyratelimit'
---
SilverStripe\Core\Injector\Injector:
  WakeWorks\RequestProxy\RateLimitMiddleware:
    class: WakeWorks\RequestProxy\Middlewares\RateLimitMiddleware
    properties:
      ExtraKey: 'requestproxylimiter'
      MaxAttempts: 10
      Decay: 1
```

Extension Hooks
---------------

[](#extension-hooks)

There are some extension hooks provided.

- `updateResponse($response)` in `WakeWorks\RequestProxy\Controllers\RequestProxyController` allows you to change the response of the default /\_requestproxy controller.
- `updateCurlOptions($curl)` in `WakeWorks\RequestProxy\RequestProxy` allows you to add more or change options in the $curl object.
- `updateCurlResponseData($curl, $data)` allows you to add data from $curl into $data that is returned by `RequestProxy::make_request`

###  Health Score

29

—

LowBetter than 57% of packages

Maintenance34

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 72.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~206 days

Total

5

Last Release

635d ago

Major Versions

1.x-dev → 2.x-dev2024-10-07

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/7694808?v=4)[Jan Metzger](/maintainers/Zazama)[@Zazama](https://github.com/Zazama)

![](https://www.gravatar.com/avatar/952c91f22ff89bfb25c32822340e47aef16aec424c492e19fc9840c51092b0cc?d=identicon)[wakeworks](/maintainers/wakeworks)

---

Top Contributors

[![Zazama](https://avatars.githubusercontent.com/u/7694808?v=4)](https://github.com/Zazama "Zazama (8 commits)")[![pausenaufsicht](https://avatars.githubusercontent.com/u/102295395?v=4)](https://github.com/pausenaufsicht "pausenaufsicht (3 commits)")

---

Tags

requestproxyjavascriptcsssilverstripefonts

### Embed Badge

![Health badge](/badges/wakeworks-requestproxy/health.svg)

```
[![Health](https://phpackages.com/badges/wakeworks-requestproxy/health.svg)](https://phpackages.com/packages/wakeworks-requestproxy)
```

###  Alternatives

[nette/http

🌐 Nette Http: abstraction for HTTP request, response and session. Provides careful data sanitization and utility for URL and cookies manipulation.

49119.8M601](/packages/nette-http)[silverstripe/cms

The SilverStripe Content Management System

5253.6M1.4k](/packages/silverstripe-cms)[silverstripe/admin

SilverStripe admin interface

262.8M384](/packages/silverstripe-admin)[middlewares/minifier

Middleware to minify Html, CSS and Javascript responses

1729.4k5](/packages/middlewares-minifier)[geekality/php-cross-domain-proxy

Simple self-contained PHP proxy for cross-origin ajax requests.

241.4k](/packages/geekality-php-cross-domain-proxy)[behamin/service-proxy

for proxy or sending requests to other services with useful utilities

102.2k](/packages/behamin-service-proxy)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
