PluginProbe ʕ •ᴥ•ʔ
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization / trunk
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization vtrunk
1.19.8 1.19.7 1.19.6 1.19.5 trunk 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.12.0 1.13.0 1.14.0 1.15.0 1.15.1 1.15.2 1.15.3 1.16.0 1.16.1 1.16.2 1.16.3 1.16.4 1.16.5 1.16.6 1.16.7 1.16.8 1.17.0 1.17.6 1.17.7 1.17.8 1.17.9 1.18.0 1.18.1 1.18.2 1.18.3 1.18.4 1.18.5 1.18.6 1.18.7 1.18.8 1.18.9 1.19.0 1.19.1 1.19.2 1.19.3 1.19.4 1.3.19 1.3.20 1.4.0 1.4.1 1.5.0 1.5.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.16 1.5.17 1.5.18 1.5.19 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.7.0 1.7.1 1.8.0 1.8.1 1.8.3 1.9.0 1.9.1 1.9.2
nitropack / nitropack-sdk / NitroPack / SDK / Integrations / ReverseProxy.php
nitropack / nitropack-sdk / NitroPack / SDK / Integrations Last commit date
Nginx.php 1 year ago ReverseProxy.php 1 month ago Varnish.php 1 year ago
ReverseProxy.php
65 lines
1 <?php
2 namespace NitroPack\SDK\Integrations;
3 use \NitroPack\HttpClient\HttpClient;
4 use \NitroPack\HttpClient\HttpClientMulti;
5
6 class ReverseProxy {
7
8 protected $serverList;
9 protected $purgeMethod;
10 protected $headers;
11
12 public function __construct($serverList=null, $purgeMethod="PURGE", $headers = []) {
13 $this->serverList = $serverList;
14 $this->purgeMethod = $purgeMethod;
15 $this->headers = $headers;
16 }
17
18 public function setServerList($serverList=null) {
19 $this->serverList = $serverList;
20 }
21
22 public function setPurgeMethod($method) {
23 $this->purgeMethod = $method;
24 }
25
26 public function setHeader($name, $value) {
27 $this->headers[$name] = $value;
28 }
29
30 public function purge($url, $newPurgeScheme = false) {
31 if ($newPurgeScheme) {
32 $client = new HttpClient($url);
33 $client->doNotDownload = true;
34
35 foreach ($this->headers as $name => $value) {
36 $client->setHeader($name, $value);
37 }
38
39 $client->fetch(true, $this->purgeMethod);
40
41 return true;
42 }
43
44 if (empty($this->serverList)) return false;
45
46 $httpMulti = new HttpClientMulti();
47 foreach ($this->serverList as $server) {
48 $client = new HttpClient($url);
49 $client->hostOverride($client->host, $server);
50 $client->doNotDownload = true;
51
52 if (strpos($server, '127.0.0.1') !== false || strpos($server, 'localhost') !== false) {
53 $client->scheme = 'http';
54 }
55
56 foreach ($this->headers as $name => $value) {
57 $client->setHeader($name, $value);
58 }
59
60 $httpMulti->push($client);
61 }
62
63 $httpMulti->fetchAll(true, $this->purgeMethod);
64 }
65 }