Комментарии 18
А почему не скажем cloudflare или cloudfront. _https://www.datanyze.com/market-share/site-delivery/Kazakhstan/cloudflare-cdn-market-share
Насколько я знаю оба провайдера дают API для провайдеров, также первый еще и сертификат выдает. Есть ли какие то преимущества вашей реализации?
По ряду причин, описанных в документации к lua-nginx-module из состава OpenResty, выгоднее всегда использовать локальные объявления.
Для того, чтобы быстро проверить объявления в вашем коде, можно воспользоваться утилитой lua-releng от тех же авторов.
Вывод для вашего кода:
Для того, чтобы быстро проверить объявления в вашем коде, можно воспользоваться утилитой lua-releng от тех же авторов.
Вывод для вашего кода:
vladislav@dt1:~$ ./lua-releng init.lua WARNING: No "_VERSION" or "version" field found in `init.lua`. Checking use of Lua global variables in file init.lua... op no. line instruction args ; code 2 [2] SETGLOBAL 0 -1 ; getCdnHosts 4 [11] SETGLOBAL 0 -2 ; stringToTable 6 [27] SETGLOBAL 0 -3 ; valueExists Checking line length exceeding 80... vladislav@dt1:~$ ./lua-releng body_filter.lua WARNING: No "_VERSION" or "version" field found in `body_filter.lua`. Checking use of Lua global variables in file body_filter.lua... op no. line instruction args ; code 1 [1] GETGLOBAL 0 -2 ; getCdnHosts 6 [1] SETGLOBAL 0 -1 ; allCdnHosts 7 [2] GETGLOBAL 0 -7 ; stringToTable 13 [2] SETGLOBAL 0 -6 ; replaceHosts 23 [3] SETGLOBAL 0 -9 ; cdnHost 27 [4] SETGLOBAL 0 -13 ; replaceEof 28 [6] GETGLOBAL 0 -9 ; cdnHost 31 [6] GETGLOBAL 0 -17 ; valueExists 32 [6] GETGLOBAL 1 -1 ; allCdnHosts 33 [6] GETGLOBAL 2 -9 ; cdnHost 38 [8] GETGLOBAL 1 -6 ; replaceHosts 48 [9] GETGLOBAL 8 -9 ; cdnHost 56 [13] SETGLOBAL 8 -13 ; replaceEof 66 [21] GETGLOBAL 5 -1 ; allCdnHosts 91 [28] SETGLOBAL 4 -13 ; replaceEof 94 [32] GETGLOBAL 1 -13 ; replaceEof Checking line length exceeding 80... body_filter.lua:3: cdnHost = ngx.var["cookie_" .. ngx.var["cdn_project"] .. "_cdn_host"] body_filter.lua:18: local scriptStr = "<script src='/cdn.js' type='text/javascript'></script>" .. body_filter.lua:21: "getFastestHost('" .. table.concat(allCdnHosts, "', '") .. "')" .. body_filter.lua:25: local newStr, n, err = ngx.re.gsub(ngx.arg[1], "(</body>)", scriptStr .. "$1", "i")
Если я правильно понимаю, нужна автономка, а это сильно дороже.
Ещё не факт, что это вопрос решит. Оптимальный по числу хопов маршрут не всегда наилучший по скорости или стоимости трафика, так что вы всё правильно сделали.
Вообще BGP как раз даёт возможность получать оптимальный с точки зрения провайдера-получателя траффика маршрут, если пириться с ним напрямую. Позволяет, в том числе, делать много стыков с одним и тем же провайдером в географически разных регионах, и всё это даже может работать, если они не накосячат в настройках маршрутизации внутри своей сети.
Конечно, есть и минусы, например — нельзя перенаправить часть нагрузки, только всё или ничего. Нужна своя автономка, нужно пириться, нужно уметь настраивать всё это.
Конечно, есть и минусы, например — нельзя перенаправить часть нагрузки, только всё или ничего. Нужна своя автономка, нужно пириться, нужно уметь настраивать всё это.
НЛО прилетело и опубликовало эту надпись здесь
Спасибо, идея хорошая. У нас файлы размещаются аналогично, только используем мы nginx вместе с tmpfs вместо memcached.
А заливку фоток на множество серверов каким образом делаете?
А заливку фоток на множество серверов каким образом делаете?
Шикарно. А если к всему этому добавить возврат статистики по пингам обратно на центральный сервер для статистики и мониторинга и добавить обработку не 200-х кодов переключением на второй по доступности хост, либо вообще реализовать подгрузку картинок через JavaScript на стороне клиента, разбрасывая нагрузку по запросам пропорционально пингам и при этом отправляя при переходах статистику по отличным от 200 кодам обратно в центр, решение будет совсем замечательным.
И вопрос: а почему не использовали полный редирект на точку присутствия у соответствующего провайдера и не стали раздавать статику с него, при этом проксируя динамику в центр. Ведь на связность в точках присутствия больше влияния чем на связность клиента и сервера? Да добавляется лишний элемент, который ещё нужно мониторить, но с центра кэшированием можно снять часть нагрузки…
И вопрос: а почему не использовали полный редирект на точку присутствия у соответствующего провайдера и не стали раздавать статику с него, при этом проксируя динамику в центр. Ведь на связность в точках присутствия больше влияния чем на связность клиента и сервера? Да добавляется лишний элемент, который ещё нужно мониторить, но с центра кэшированием можно снять часть нагрузки…
Это вот этот пиксель?
Mixed Content: The page at 'https://kolesa.kz/' was loaded over HTTPS, but requested an insecure image 'http://sync-eu.exe.bid/image?source=mgid&id=h4ly0I_tPEx7'. This content should also be served over HTTPS.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Что нам стоит CDN построить