{"id":78254,"date":"2020-04-18T01:42:42","date_gmt":"2020-04-17T23:42:42","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/veb-highload-kak-my-upravlyaem-trafikom-desyatkov-tysyach-domenov"},"modified":"2026-05-20T17:45:17","modified_gmt":"2026-05-20T15:45:17","slug":"veb-highload-kak-my-upravlyaem-trafikom-desyatkov-tysyach-domenov","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/veb-highload-kak-my-upravlyaem-trafikom-desyatkov-tysyach-domenov","title":{"rendered":"Web-HighLoad \u2014 how we manage traffic for tens of thousands of domains","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Legitimate traffic in the DDoS-Guard network recently surpassed one hundred gigabits per second. Currently, 50% of all our traffic is generated by our clients' web services. This includes many tens of thousands of domains, very diverse and, in most cases, requiring an individual approach.<\/p>\n<p>Below we explain how we manage front nodes and issue <a class=\"wpil_keyword_link\" title=\"SSL Certificates\" href=\"https:\/\/prohoster.info\/en\/ssl-sertifikat\/\" data-wpil-keyword-link=\"linked\" data-wpil-monitor-id=\"357\">SSL Certificates<\/a> for hundreds of thousands of websites.<\/p>\n<p><img decoding=\"async\" style=\"display: block; margin: 0 auto;\" src=\"\/wp-content\/uploads\/2020\/04\/5e4fece0f5039f0fb1af5ead9e0e0089.jpg\" alt=\"Web-HighLoad \u2014 how we manage traffic for tens of thousands of domains\" \/><\/p>\n<p><a rel=\"nofollow\" name=\"habracut\"><\/a><\/p>\n<p>Setting up a front for a single website, even a very large one, is simple. We take nginx or haproxy or lighttpd, configure it according to guides, and forget about it. If something needs to change, we reload and forget again.<\/p>\n<p>Everything changes when you handle large volumes of traffic on the fly, assess the legitimacy of requests, compress and cache user content, and change parameters several times per second. A user expects to see results on all external nodes immediately after changing settings in their personal account. Also, a user may upload several thousand (sometimes even tens of thousands) domains with individual traffic processing parameters via API. All of this needs to work immediately in America, Europe, and Asia \u2014 a not trivial task, considering that in Moscow alone there are several physically dispersed filtering nodes.<\/p>\n<h3>Why have many large reliable nodes around the world?<\/h3>\n<ul>\n<li>The quality of service for client traffic \u2014 requests from the USA need to be processed in the USA (including for attacks, parsing, and other anomalies), rather than being routed to Moscow or Europe, unpredictably increasing processing latency.<\/li>\n<li>Attacking traffic needs to be localized \u2014 transit operators may degrade during attacks, whose volumes often exceed 1Tbps. Transporting attacking traffic over transatlantic or transasiatic links is not the best idea. We've had real cases where Tier-1 operators said: 'The volumes of attacks you are taking are dangerous for us.' This is why we accept incoming flows as close to their sources as possible.<\/li>\n<li>Stringent service continuity requirements mean that the cleaning centers must not depend on each other or on local events in our rapidly changing world. Did a power outage affect all 11 floors of MMT-9 for a week? \u2014 No problem. No client, not physically connected to this location, will be impacted, and web services will remain unaffected under any circumstances.<\/li>\n<\/ul>\n<h3>How to manage all this?<\/h3>\n<p>Service configurations must be propagated to all front nodes as quickly as possible (ideally instantly). It is not sufficient to just modify text configurations and restart daemons with each change \u2014 even nginx holds on to terminating processes (worker shutting down) for several minutes (and sometimes even hours if there are long websocket sessions).<\/p>\n<p>During the configuration reload of nginx, the following scenario is quite normal:<\/p>\n<p><img decoding=\"async\" style=\"display: block; margin: 0 auto;\" src=\"\/wp-content\/uploads\/2020\/04\/6a1ffc01ad9bac1e51d46c3130ea2a37.jpg\" alt=\"Web-HighLoad \u2014 how we manage traffic for tens of thousands of domains\" \/><\/p>\n<p>Regarding memory usage:<\/p>\n<p><img decoding=\"async\" style=\"display: block; margin: 0 auto;\" src=\"\/wp-content\/uploads\/2020\/04\/d356134b0866b8c92a3d5f7a3a8df208.jpg\" alt=\"Web-HighLoad \u2014 how we manage traffic for tens of thousands of domains\" \/><\/p>\n<p>Old workers consume memory, including non-linearly dependent on the number of connections \u2014 this is normal. When the client connections close, this memory will be freed up.<\/p>\n<p>Why wasn\u2019t this an issue when nginx was just starting to develop? There were neither HTTP\/2 nor WebSocket, nor a multitude of long keep-alive connections. 70% of our web traffic is HTTP\/2, which involves very long connections.<\/p>\n<p>The solution is simple \u2014 do not use nginx, do not manage front ends based on text files, and certainly do not transmit compressed text configurations across transoceanic channels. The channels are guaranteed and reserved, but they are no less transcontinental.<\/p>\n<p>We have our own front-server balancer, the details of which I will discuss in upcoming articles. The main capability is to apply thousands of configuration changes per second on the fly, without restarts, reloads, or surges in memory usage. This is quite similar to Hot Code Reload, as seen in Erlang. Data is stored in a geo-distributed key-value database and is immediately accessed by the front-end execution mechanisms. For instance, you uploaded an SSL certificate through the web interface or API in Moscow, and within seconds, it is ready for use in our clearing center in Los Angeles. If a world war breaks out, and the internet goes down globally, our nodes will continue to operate autonomously and will resolve split-brain conditions once one of the dedicated channels\u2014Los Angeles-Amsterdam-Moscow, Moscow-Amsterdam-Hong Kong-Los Angeles or even one of the backup overlay GRE\u2014is available.<\/p>\n<p>This same mechanism allows us to instantly issue and renew <a href=\"https:\/\/prohoster.info\/en\/\">Let&#8217;s Encrypt certificates.<\/a> In very simple terms, this works like this:<\/p>\n<ol>\n<li>As soon as we see at least one HTTPS request for our client's domain without a certificate (or with an expired certificate), the external node that received the request informs the internal certification center.\n<p><img decoding=\"async\" style=\"display: block; margin: 0 auto;\" src=\"\/wp-content\/uploads\/2020\/04\/20830ee7c4ea57ec1d0833f0bc25412d.jpg\" alt=\"Web-HighLoad \u2014 how we manage traffic for tens of thousands of domains\" \/><\/li>\n<li>If the user has not denied the issuance of Let&#8217;s Encrypt, the certification center generates a CSR, obtains a confirmation token from LE, and sends it to all fronts over an encrypted channel. Now any node can confirm the validation request from LE.\n<p><img decoding=\"async\" style=\"display: block; margin: 0 auto;\" src=\"\/wp-content\/uploads\/2020\/04\/1c8b295065f27c1b69c810ff74ce4018.jpg\" alt=\"Web-HighLoad \u2014 how we manage traffic for tens of thousands of domains\" \/><\/li>\n<li>In just a few moments, we will receive a valid certificate and private key and promptly distribute them to the fronts again without rebooting the daemons.\n<p><img decoding=\"async\" style=\"display: block; margin: 0 auto;\" src=\"\/wp-content\/uploads\/2020\/04\/e4fc349089fbf7cbe7824ea539865daf.jpg\" alt=\"Web-HighLoad \u2014 how we manage traffic for tens of thousands of domains\" \/><\/li>\n<li>Seven days before the expiration date, the certificate renewal procedure is initiated.<\/li>\n<\/ol>\n<p>Right now, we are rotating 350,000 certificates in real-time completely transparently for users.<\/p>\n<p>In the upcoming articles of this series, I will discuss other features of real-time processing of large web traffic\u2014such as analyzing RTT using incomplete data to improve service quality for transit clients, safeguarding transit traffic against terabit attacks, information delivery and aggregation about traffic, WAF, an almost limitless CDN, and numerous content delivery optimization mechanisms.<\/p>\n<p class=\"for_users_only_msg\">Only registered users can participate in the survey. <a href=\"https:\/\/habr.com\/ru\/auth\/login\/\" rel=\"nofollow\">Please log in<\/a>, please.<\/p>\n<h2 class=\"default-block__polling-title\">What would you like to learn about first?<\/h2>\n<ul class=\"poll-result\">\n<li class=\"poll-result__item\"><strong class=\"poll-result__data-percent\">14,3%<\/strong>Clustering algorithms and web traffic quality analysis&lt;3<\/li>\n<li class=\"poll-result__item\"><strong class=\"poll-result__data-percent  poll-result__data-percent_winner\">33,3%<\/strong>The inner workings of DDoS-Guard Load Balancers7<\/li>\n<li class=\"poll-result__item\"><strong class=\"poll-result__data-percent\">9,5%<\/strong>Protection of transit L3\/L4 traffic2<\/li>\n<li class=\"poll-result__item\"><strong class=\"poll-result__data-percent\">0,0%<\/strong>Protection of websites on transit traffic0<\/li>\n<li class=\"poll-result__item\"><strong class=\"poll-result__data-percent\">14,3%<\/strong>Web Application Firewall3<\/li>\n<li class=\"poll-result__item\"><strong class=\"poll-result__data-percent\">28,6%<\/strong>Protection against scraping and clicking6<\/li>\n<\/ul>\n<p>21 users voted. 6 users abstained.<\/p>\n<p>Source: <a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ddosguard\/blog\/497632\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u0432 \u0441\u0435\u0442\u0438 DDoS-Guard \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u043b \u0441\u043e\u0442\u043d\u044e \u0433\u0438\u0433\u0430\u0431\u0438\u0442 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u0421\u0435\u0439\u0447\u0430\u0441 50% \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u0448\u0435\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432. \u042d\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0442\u044b\u0441\u044f\u0447 \u0434\u043e\u043c\u0435\u043d\u043e\u0432, \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0437\u043d\u044b\u0445 \u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0445 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u2014 \u043a\u0430\u043a \u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u0440\u043e\u043d\u0442-\u043d\u043e\u0434\u0430\u043c\u0438 \u0438 \u0432\u044b\u0434\u0430\u0435\u043c SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0434\u043b\u044f \u0441\u043e\u0442\u0435\u043d \u0442\u044b\u0441\u044f\u0447 \u0441\u0430\u0439\u0442\u043e\u0432. \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0444\u0440\u043e\u043d\u0442 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u043f\u0443\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u043e\u0447\u0435\u043d\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":78255,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-78254","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u0432 \u0441\u0435\u0442\u0438 DDoS-Guard \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u043b \u0441\u043e\u0442\u043d\u044e \u0433\u0438\u0433\u0430\u0431\u0438\u0442 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u0421\u0435\u0439\u0447\u0430\u0441 50% \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u0448\u0435\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/veb-highload-kak-my-upravlyaem-trafikom-desyatkov-tysyach-domenov\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412\u0435\u0431-HighLoad \u2014 \u043a\u0430\u043a \u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0440\u0430\u0444\u0438\u043a\u043e\u043c \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0442\u044b\u0441\u044f\u0447 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u0432 \u0441\u0435\u0442\u0438 DDoS-Guard \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u043b \u0441\u043e\u0442\u043d\u044e \u0433\u0438\u0433\u0430\u0431\u0438\u0442 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u0421\u0435\u0439\u0447\u0430\u0441 50% \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u0448\u0435\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/veb-highload-kak-my-upravlyaem-trafikom-desyatkov-tysyach-domenov\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-04-17T23:42:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-05-20T15:45:17+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Web-HighLoad \u2014 how we manage traffic for tens of thousands of domains | ProHoster","description":"Legitimate traffic in the DDoS-Guard network recently surpassed one hundred gigabits per second. Currently, 50% of all our traffic is generated by client web services.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/veb-highload-kak-my-upravlyaem-trafikom-desyatkov-tysyach-domenov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412\u0435\u0431-HighLoad \u2014 \u043a\u0430\u043a \u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0440\u0430\u0444\u0438\u043a\u043e\u043c \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0442\u044b\u0441\u044f\u0447 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 | ProHoster","og:description":"\u041b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u0432 \u0441\u0435\u0442\u0438 DDoS-Guard \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u043b \u0441\u043e\u0442\u043d\u044e \u0433\u0438\u0433\u0430\u0431\u0438\u0442 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u0421\u0435\u0439\u0447\u0430\u0441 50% \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u0448\u0435\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/veb-highload-kak-my-upravlyaem-trafikom-desyatkov-tysyach-domenov","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-04-17T23:42:42+00:00","article:modified_time":"2026-05-20T15:45:17+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"78254","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:02:44","updated":"2026-02-08 16:18:04","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/78254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=78254"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/78254\/revisions"}],"predecessor-version":[{"id":157522,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/78254\/revisions\/157522"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/78255"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=78254"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=78254"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=78254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}