PHP code example of yiisoft / proxy-middleware
1. Go to this page and download the library: Download yiisoft/proxy-middleware library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
yiisoft / proxy-middleware example snippets
use Yiisoft\Yii\Middleware\TrustedHeaderProtocolResolver;
/**
* @var Psr\Http\Message\ServerRequestInterface $request
* @var Psr\Http\Server\RequestHandlerInterface $handler
*/
$middleware = new TrustedHeaderProtocolResolver();
$middleware = $middleware->withAddedProtocolHeader('x-forwarded-proto', [
'http' => ['http'],
'https' => ['https', 'on'],
]);
// Disable earlier settings:
$middleware = $middleware->withoutProtocolHeader('x-forwarded-proto');
$response = $middleware->process($request, $handler);
use Yiisoft\ProxyMiddleware\TrustedHostsNetworkResolver;
/** @var TrustedHostsNetworkResolver $middleware */
$middleware = $middleware->withTrustedIps([['8.8.8.8', '2.2.2.2', '18.18.18.18']]);
use Yiisoft\ProxyMiddleware\TrustedHostsNetworkResolver;
/** @var TrustedHostsNetworkResolver $middleware */
$middleware = $middleware->withForwardedHeaderGroups([
TrustedHostsNetworkResolver::FORWARDED_HEADER_GROUP_RFC,
TrustedHostsNetworkResolver::FORWARDED_HEADER_GROUP_X_PREFIX,
]);
use Yiisoft\ProxyMiddleware\TrustedHostsNetworkResolver;
/** @var TrustedHostsNetworkResolver $middleware */
$middleware = $middleware->withForwardedHeaderGroups([
'forwarded',
[
'ip' => 'x-forwarded-for',
'protocol' => 'x-forwarded-proto',
'host' => 'x-forwarded-host',
'port' => 'x-forwarded-port',
],
]);
use Yiisoft\ProxyMiddleware\TrustedHostsNetworkResolver;
/** @var TrustedHostsNetworkResolver $middleware */
$middleware = $middleware->withForwardedHeaderGroups([
[
'ip' => 'y-forwarded-for',
'protocol' => 'y-forwarded-proto',
'host' => 'y-forwarded-host',
'port' => 'y-forwarded-port',
],
TrustedHostsNetworkResolver::FORWARDED_HEADER_GROUP_X_PREFIX,
TrustedHostsNetworkResolver::FORWARDED_HEADER_GROUP_RFC,
]);
use Yiisoft\ProxyMiddleware\TrustedHostsNetworkResolver;
/** @var TrustedHostsNetworkResolver $middleware */
$middleware = $middleware->withForwardedHeaderGroups([
TrustedHostsNetworkResolver::FORWARDED_HEADER_GROUP_RFC,
[
'ip' => 'y-forwarded-for',
'protocol' => [
'front-end-https',
['on' => 'https'],
],
'host' => 'y-forwarded-host',
'port' => 'y-forwarded-port',
],
TrustedHostsNetworkResolver::FORWARDED_HEADER_GROUP_X_PREFIX,
]);
use Yiisoft\ProxyMiddleware\TrustedHostsNetworkResolver;
/** @var TrustedHostsNetworkResolver $middleware */
$middleware = $middleware->withForwardedHeaderGroups([
TrustedHostsNetworkResolver::FORWARDED_HEADER_GROUP_RFC,
[
'ip' => 'y-forwarded-for',
'protocol' => [
'front-end-https',
static fn (string $protocol): ?string => $protocol === 'On' ? 'https': 'http',,
],
'host' => 'y-forwarded-host',
'port' => 'y-forwarded-port',
],
TrustedHostsNetworkResolver::FORWARDED_HEADER_GROUP_X_PREFIX,
]);
use Yiisoft\ProxyMiddleware\TrustedHostsNetworkResolver;
/** @var TrustedHostsNetworkResolver $middleware */
$middleware = $middleware->withForwardedHeaderGroups([
TrustedHostsNetworkResolver::FORWARDED_HEADER_GROUP_RFC,
]);
use Yiisoft\ProxyMiddleware\TrustedHostsNetworkResolver;
/** @var TrustedHostsNetworkResolver $middleware */
$middleware = $middleware->withTypicalForwardedHeaders([
// RFC
'forwarded',
// "X" prefix
'x-forwarded-for',
'x-forwarded-host',
'x-forwarded-proto',
'x-forwarded-port',
// Microsoft
'front-end-https',
]);
use Yiisoft\ProxyMiddleware\TrustedHostsNetworkResolver;
/** @var TrustedHostsNetworkResolver $middleware */
$middleware = $middleware->withForwardedHeaderGroups([
TrustedHostsNetworkResolver::FORWARDED_HEADER_GROUP_RFC,
TrustedHostsNetworkResolver::FORWARDED_HEADER_GROUP_X_PREFIX,
]);
[
'Forwarded' => [
'for="9.9.9.9:8013";proto=http;host=example13.com',
'for="8.8.8.8:8012";proto=http;host=example12.com',
'for="2.2.2.2:8011";proto=http;host=example11.com',
],
'X-Forwarded-For' => 'not-secure',
'X-Forwarded-Host' => 'not-secure',
'X-Forwarded-Proto' => 'not-secure',
'X-Forwarded-Port' => 'not-secure',
'Front-End-Https' => 'not-secure',
'Non-Forwarded' => 'not-typical',
];
use Psr\Http\Message\ServerRequestInterface;
/** @var ServerRequestInterface $request */
$ip = $request->getAttribute(TrustedHostsNetworkResolver::ATTRIBUTE_REQUEST_CLIENT_IP);
use Psr\Http\Message\ServerRequestInterface;
use Yiisoft\ProxyMiddleware\TrustedHostsNetworkResolver;
/** @var TrustedHostsNetworkResolver $middleware */
$middleware = $middleware->withConnectionChainItemsAttribute('connectionChainItems');
// ...
/** @var ServerRequestInterface $request */
$connectionChainItems = $request->getAttribute('connectionChainItems');
[
[
'ip' => '18.18.18.18',
'protocol' => null,
'host' => null,
'port' => null,
'ipIdentifier' => null,
],
[
'ip' => '2.2.2.2',
'protocol' => 'http',
'host' => 'example1.com',
'port' => null,
'ipIdentifier' => '_obfuscated1',
]
],
use Yiisoft\ProxyMiddleware\TrustedHostsNetworkResolver;
class MyTrustedHostsNetworkResolver extends TrustedHostsNetworkResolver
{
protected function reverseObfuscateIpIdentifier(
string $ipIdentifier,
array $validatedConnectionChainItems,
array $remainingConnectionChainItems,
RequestInterface $request,
): ?array
{
return match ($ipIdentifier) {
'_obfuscated1' => ['2.2.2.2', null], // Without port
'_obfuscated2' => ['5.5.5.5', '8082'], // With port
default => null, // Unable to resolve (default)
};
}
}