PluginProbe ʕ •ᴥ•ʔ
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization / 1.19.7
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization v1.19.7
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 2 months 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 }