-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathnginx-site-default.conf
93 lines (81 loc) · 3.08 KB
/
nginx-site-default.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
lua_shared_dict wrr 10m;
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name rtr.mdthk.de;
location / {
try_files $uri $uri/ =404;
}
location /Filmliste-akt.xz {
access_by_lua '
ngx.ctx.srvs = {}
ngx.ctx.srvs[0] = "http://verteiler1.mediathekview.de/Filmliste-akt.xz"
ngx.ctx.srvs[1] = "http://verteiler2.mediathekview.de/Filmliste-akt.xz"
ngx.ctx.srvs[2] = "http://verteiler3.mediathekview.de/Filmliste-akt.xz"
ngx.ctx.srvs[3] = "http://verteiler4.mediathekview.de/Filmliste-akt.xz"
ngx.ctx.srvs[4] = "http://verteiler5.mediathekview.de/Filmliste-akt.xz"
ngx.ctx.srvs[5] = "http://verteiler6.mediathekview.de/Filmliste-akt.xz"
ngx.ctx.srvs[6] = "https://verteiler.mediathekviewweb.de/Filmliste-akt.xz"
ngx.ctx.srvs[7] = "https://verteiler2.mediathekviewweb.de/Filmliste-akt.xz"
ngx.ctx.weights = {}
ngx.ctx.weights[0] = 4
ngx.ctx.weights[1] = 2
ngx.ctx.weights[2] = 4
ngx.ctx.weights[3] = 2
ngx.ctx.weights[4] = 4
ngx.ctx.weights[5] = 4
ngx.ctx.weights[6] = 2
ngx.ctx.weights[7] = 2
if ngx.shared.wrr:get("i") == nil then
ngx.shared.wrr:set("i", -1)
end
if ngx.shared.wrr:get("cw") == nil then
ngx.shared.wrr:set("cw", 0)
end
';
content_by_lua '
local function max(a)
local max = -1
for k in pairs(a) do
if a[k] > max then
max = a[k]
end
end
return max
end
local function gcd(a)
local function gcd(m, n)
while m ~= 0 do
m, n = (n % m), m;
end
return n;
end
local m = 0
for k in pairs(a) do
m = gcd(m, a[k])
end
return m
end
local function wrr()
while true do
ngx.shared.wrr:set("i", (ngx.shared.wrr:get("i") + 1) % 8)
if ngx.shared.wrr:get("i") == 0 then
ngx.shared.wrr:set("cw", ngx.shared.wrr:get("cw") - gcd(ngx.ctx.weights))
if ngx.shared.wrr:get("cw") <= 0 then
ngx.shared.wrr:set("cw", max(ngx.ctx.weights))
if ngx.shared.wrr:get("cw") == 0 then
return nil
end
end
end
if ngx.ctx.weights[ngx.shared.wrr:get("i")] >= ngx.shared.wrr:get("cw") then
return ngx.ctx.srvs[ngx.shared.wrr:get("i")]
end
end
end
ngx.redirect(wrr(), 302)
';
}
}