{"id":178727,"date":"2013-05-04T21:06:04","date_gmt":"2013-05-04T17:06:04","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=178727"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=178727","title":{"rendered":"<span class=\"post_title\">geoDNS \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Powerdns \u0438 nginx<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u041e\u0431\u043e\u0436\u0430\u044e \u0437\u0430\u0434\u0430\u0447\u0438 \u201c\u043d\u0430 \u0441\u0442\u044b\u043a\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439\u201d, \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0442\u0430\u043a\u0438\u0445.<br \/>  \u0417\u0430\u0434\u0430\u0447\u0430:  <\/p>\n<ul>\n<li>\u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c geoDNS*<\/li>\n<li>c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e wildcard (*.some.tst. A 1.2.3.4)<\/li>\n<li>\u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0435\u043d\u044f\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0437\u043e\u043d \u043d\u0430 \u0445\u043e\u0434\u0443, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0437\u043e\u043d\u044b \u043f\u0430\u0447\u043a\u0430\u043c\u0438<\/li>\n<li>\u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u201c\u043c\u0438\u043c\u043e \u043a\u0435\u0448\u0430\u201d<\/li>\n<li>\u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0442\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0440\u0435\u0430\u043a\u0442\u043e\u0440 (\u0441 \u043b\u043e\u043a\u0430\u043b\u0445\u043e\u0441\u0442\u0430, \u0430 \u043d\u0435 \u043a\u0443\u0447\u0438 proxy\/VDS)<\/li>\n<\/ul>\n<p>  *) \u043f\u043e\u0434 geoDNS \u044f \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\/\u0410-\u0437\u0430\u043f\u0438\u0441\u0438 (\u0434\u043b\u044f \u0421\u0428\u0410 \u043e\u0442\u0434\u0430\u0451\u0442\u0441\u044f IP \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 \u0421\u0428\u0410, \u0434\u043b\u044f \u0421\u041d\u0413 \u2014 \u0432 \u043c\u043e\u0441\u043a\u0432\u0435, \u0434\u043b\u044f \u0415\u0421 \u2014 \u0432 \u0415\u0432\u0440\u043e\u043f\u0435 &#8230;)<\/p>\n<p>  \u0421\u0442\u0430\u0442\u044c\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442  <\/p>\n<ul>\n<li>\u043c\u0435\u0442\u043e\u0434 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 geoDNS<\/li>\n<li>\u043c\u0435\u0442\u043e\u0434 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/li>\n<li>\u044d\u0441\u043a\u0438\u0437\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u201c\u0447\u0438\u0441\u0442\u043e\u043c nginx\u201d<\/li>\n<\/ul>\n<p>  \u0415\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043f\u0440\u0438\u0447\u0451\u043c \u0436\u0435 \u0437\u0434\u0435\u0441\u044c nginx, \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442.<br \/>  <a name=\"habracut\"><\/a><\/p>\n<p>  \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f (<a href=\"http:\/\/www.caraytech.com\/geodns\/\">\u043f\u0430\u0442\u0447 \u0434\u043b\u044f bind<\/a>, <a href=\"http:\/\/doc.powerdns.com\/html\/geo.html\">geo_backend <\/a>\u0438 <a href=\"http:\/\/doc.powerdns.com\/html\/backends-detail.html#pipebackend\">pipe_backend<\/a> \u0443 powerdns), \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043d\u0430\u0441 \u0447\u0435\u043c-\u0442\u043e \u043d\u0435 \u0443\u0441\u0442\u0440\u043e\u0438\u043b\u0438.<\/p>\n<h4>\u041c\u0435\u0442\u043e\u0434 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 geoDNS<\/h4>\n<p>  Powerdns(pdns) \u2014 <a href=\"http:\/\/powerdns.com\">\u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0430\u0442\u0438\u0432\u043d\u044b\u0439 dns \u0441\u0435\u0440\u0432\u0435\u0440<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u043a\u0443\u0447\u0443 (\u0430\u0436 <a href=\"http:\/\/doc.powerdns.com\/html\/backends-detail.html\">15 \u0448\u0442\u0443\u043a<\/a>) \u0431\u0435\u043a\u0435\u043d\u0434\u043e\u0432 (\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438) \u043e\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 BIND-like \u0434\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0421\u0423\u0411\u0414 (MySQL, Oracle, PostgreSQL, sqlite), \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e pipe \u0438 \u044d\u043a\u0437\u043e\u0442\u0438\u043a\u0438 \u0442\u0438\u043f\u0430 Lua, LDAP.<\/p>\n<p>  \u0411\u044d\u043a\u044d\u043d\u0434 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0439 \u0438\u043d\u0441\u0442\u0430\u043b\u044f\u0446\u0438\u0438 (\u043d\u0435\u043b\u044c\u0437\u044f 5 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u043d\u0430 mysql, \u0435\u0449\u0435 5 \u043d\u0430 sqlite \u0438 \u0442.\u0434) \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"dos\">launch=remote remote-connection-string=http:url=http:\/\/127.0.0.1:4343\/dnsapi <\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <a href=\"http:\/\/doc.powerdns.com\/html\/remotebackend.html\">remote backend<\/a>, pdns \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u0442 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 http-\u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442 \u043e\u043d\u043d\u043e\u0433\u043e http-\u043e\u0442\u0432\u0435\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043b\u044e\u0431\u0438\u043c\u043e\u043c web-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 json<\/p>\n<p>  \u041a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u0440:  <\/p>\n<pre><code>&gt; GET \/dnsapi\/lookup\/www.example.com\/ANY HTTP\/1.1 &lt; {&quot;result&quot;:[{&quot;qtype&quot;:&quot;A&quot;, &quot;qname&quot;:&quot;www.example.com&quot;, &quot;content&quot;:&quot;192.168.1.2&quot;, &quot;ttl&quot;: 60}]} <\/code><\/pre>\n<p>  \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0430 \u0432\u0435\u0431\u0441\u0435\u0440\u0432\u0435\u0440 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0443 \u043d\u0435\u043b\u044c\u0437\u044f (\u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0436\u0438\u0440\u043d\u043e \u0431\u0443\u0434\u0435\u0442, \u0434\u0430 \u0438 ddos \u0447\u0435\u0440\u0435\u0437 DNS \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d), \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 DNS \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c nginx, \u043e\u0442\u0434\u0430\u044e\u0449\u0435\u043c \u043e\u0431\u044b\u0447\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u043a\u0443. <\/p>\n<p>  \u041d\u0430 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435, \u043b\u043e\u0433\u0438\u043a\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0438 \u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 try_files \u0438 rewrite \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f geo \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439 \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u044f <a href=\"http:\/\/nginx.org\/ru\/docs\/http\/ngx_http_geo_module.html\">ngx_http_geo_module<\/a> <br \/>  \u041f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0445\u0438\u0442\u0440\u043e\u0432\u044b\u0434\u0443\u043c\u0430\u043d\u043d\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u044d\u0442\u043e\u0439 \u0441\u0430\u043c\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u043a\u0438 (\u0441\u043c. \u043d\u0438\u0436\u0435).<\/p>\n<p>  \u0411\u0443\u0434\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0430\u0448\u0443 \u0437\u043e\u043d\u0443 (\u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0437\u0430json-\u0435\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442, \u0431\u0435\u0437 \u0443\u0447\u0451\u0442\u0430 geo-\u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438) \u0432 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0432\u0438\u0434\u0430<br \/>  <code>\/$1\/$2$1_$3.jsn<\/code><br \/>  <code>$1<\/code> \u2014 \u0437\u043e\u043d\u0430<br \/>  <code>$2<\/code> \u2014 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d (_ \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 wildcard)<br \/>  <code>$3<\/code> \u2014 \u0442\u0438\u043f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, A, CNAME,MX\u2026 ANY)<br \/>  \u041f\u0440\u0438\u043c\u0435\u0440: \/domain.com\/sub.domain.com_A.jsn<\/p>\n<p>  \u0412\u0430\u0436\u043d\u043e\u0435 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u0435: \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f nextsub.sub.domain.com \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c  <\/p>\n<ul>\n<li>\u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0434\u043e\u043c\u0435\u043d\u043e\u043c \/nextsub.sub.domain.com\/nextsub.sub.domain.com_A.jsn<\/li>\n<li>\u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u043e\u043c \/sub.domain.com\/nextsub.sub.domain.com_A.jsn<\/li>\n<li>wildcard \/sub.domain.com\/_sub.domain.com_A.jsn<\/li>\n<\/ul>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u0442\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 (\u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0432 try_files).<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u0430 \u043d\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c, \u0438\u0449\u0435\u043c \u0432\u044b\u0448\u0435(\u044d\u0442\u043e \u043d\u0435 \u043f\u043e RFC, \u0434\u0430 \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043e\u043b\u044c\u0437\u0430 \u0441\u043e\u043c\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430): \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u043f\u043e\u0438\u0441\u043a \u0434\u043b\u044f sub.domain.com (\u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0432 rewrite)<\/p>\n<p>  \u0421\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043f\u0440\u043e geo-\u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0443\u044e.<br \/>  \u0422\u0443\u0442 \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0431\u0443\u043a\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0433\u0435\u043e\u0437\u043e\u043d\u044b: \/domain.com\/<b>def<\/b>\/sub.domain.com_A.jsn<\/p>\n<h4>\u042d\u0441\u043a\u0438\u0437\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c nginx<\/h4>\n<p>  \u041a\u043e\u0441\u0442\u044b\u043b\u044c \u0434\u043b\u044f wildcard: \u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u0438 wildcard \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0432\u0438\u0434\u0430 ddddd.domain.com \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0442\u0434\u0430\u0442\u044c \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d(\u0430 \u043d\u0435 *.domain.com), \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 <a href=\"http:\/\/nginx.org\/ru\/docs\/http\/ngx_http_sub_module.html\">ngx_http_sub_module<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 %WC% \u0432 \u0441\u0442\u0430\u0442\u0438\u043a\u0435 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u043d\u0444\u0438\u0433 nginx<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"nginx\"># \u0432 \u0445\u0435\u0430\u0434\u0435\u0440  X-remotebackend powerdns \u043a\u043b\u0430\u0434\u0451\u0442 IP \u043a\u043b\u0438\u0435\u043d\u0442\u0430 # \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u043e \u043d\u0435\u043c\u0443 \u0433\u0435\u043e\u0437\u043e\u043d\u0443, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0442\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 $src geo $http_x_remotebackend_remote $src{ \tdefault def; \t127.1.0.0\/16 i0; \t127.1.1.0\/24 i1; } # \u0444\u043e\u0440\u043c\u0430\u0442 \u043b\u043e\u0433\u0430, \u0443\u0441\u0438\u043b\u0435\u043d\u043d\u044b\u0439  \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e geo-\u0437\u043e\u043d\u0435 \u0438 IP \u043a\u043b\u0438\u0435\u043d\u0442\u0430 log_format ns '$remote_addr - [$time_local] &quot;$request&quot; $status ' '&quot;$http_user_agent&quot; $http_x_remotebackend_real_remote ' ' $http_x_remotebackend_real_remote $http_x_remotebackend_remote $http_x_remotebackend_local $src';  server { \tlisten   \t127.0.0.1:4343; \taccess_log  \/var\/www\/dns\/logs\/nginx.access.log  ns; \terror_log  \/var\/www\/dns\/logs\/nginx.error.log; \t# \u0414\u0435\u0431\u0430\u0436\u0438\u0442\u044c \u0442\u0443\u0442 ! \t#rewrite_log \ton; \troot   \/var\/www\/dns\/store;  \t# \u0432 \u043b\u044e\u0431\u043e\u0439 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043e\u0442\u0434\u0430\u0451\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438-\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443. \terror_page 403 \/backend.jsn;  \tlocation \/ { \t\treturn 403; \t} \tlocation ~* ^\/dnsapi\/lookup\/([^\\.]+)\\.([^\/]*)\/([a-z]+)$ { \t\t#\u0414\u043b\u044f \u0434\u0435\u0431\u0430\u0433\u0430 \u0447\u0435\u0440\u0435\u0437 http  \t\tadd_header X-geo $src;  \t\tsub_filter_types text\/plain; \t\tsub_filter &quot;%WC%&quot; $1.$2. ;  \t\t# \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \t\t# \u0443\u0431\u0435\u0440\u0438\u0442\u0435 \/empty.jsn    \t\ttry_files\t\/$2\/$src\/$1.$2_$3.jsn \/$1.$2\/$src\/$1.$2_$3.jsn \/$2\/$src\/_$2_$3.jsn \t\t\t\t\t\/$2\/def\/$1.$2_$3.jsn \/$1.$2\/def\/$1.$2_$3.jsn \/$2\/def\/_$2_$3.jsn \t\t\t\t\t\/empty.jsn @fallback; \t\t# \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430\u0439\u0442\u0438 \u043e\u0442\u0432\u0435\u0442 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0433\u0435\u043e\u0437\u043e\u043d\u044b ($src) \t\t# \u0435\u0441\u043b\u0438 \u043d\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c, \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439.  \t\tindex  fallback.jsn; \t\tlimit_except GET {deny all;}  \t\t# .\/nextsub.sub.domain.com\/SOA \t\t# sub.domain.com\/&lt;geo&gt;\/nextsub.sub.domain.com_SOA \t\t# nextsub.sub.domain.com\/&lt;geo&gt;\/nextsub.sub.domain.com_SOA \t\t# sub.domain.com\/&lt;geo&gt;\/_sub.domain.com_SOA \t\t# .\/sub.domain.com\/SOA \t\t# ...  \t} \t# \u0438\u0434\u0451\u043c \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432\u044b\u0448\u0435. \tlocation @fallback{ \t\trewrite ^\/dnsapi\/lookup\/([^\\.]+)\\.([^\/]*)\/([a-z]+) \/dnsapi\/lookup\/$2\/$3; \t} } #server <\/code><\/pre>\n<\/div>\n<\/div>\n<h4>\u041c\u0435\u0442\u043e\u0434 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/h4>\n<p>  \u0422\u0443\u0442 \u0432\u0441\u0451 \u0435\u0449\u0435 \u043f\u0440\u043e\u0449\u0435, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043d\u0430\u0448\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0433\u0435\u043e\u0437\u043e\u043d\u044b \u043c\u044b \u0440\u0430\u0437\u0434\u0430\u0432\u0430\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 127.0.0.0\/8, \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c dig \u0438 wget \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u043e\u0440\u043c\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 IP \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430.<\/p>\n<pre><code> wget -q -S -O - --bind-address=127.1.0.2  http:\/\/127.0.0.1:4343\/dnsapi\/lookup\/d.q.qq\/A  dig -b 127.0.12.1 ANY q.qq @localhost <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u0432\u0441\u0451 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u043a:  <\/p>\n<pre><code># dig +short -b 127.0.0.1 A q.qq @localhost 1.1.1.1 # dig +short -b 127.1.0.1 A q.qq @localhost 127.0.0.1 # dig +short -b 127.1.1.1 A q.qq @localhost 127.1.99.123 <\/code><\/pre>\n<h4>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0445\u0438\u0442\u0440\u043e\u0432\u044b\u0434\u0443\u043c\u0430\u043d\u043d\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440<\/h4>\n<p>  \u0415\u0441\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043d\u0435 \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0441\u0442\u044b\u0434\u043d\u043e. \u0412\u043e\u0442 \u0438 \u043e\u043d  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u0442\u0430\u0442\u0438\u043a\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"php\">&lt;?php $empty=array(); define('TTL',3); opt('empty',true,'empty'); opt('index','true','index'); opt('backend',false,'backend');  $zones=array();  \/\/\u044d\u0442\u0430\u043b\u043e\u043d\u043d\u0430\u044f \u0437\u043e\u043d\u0430 $q=array(); $q[]=array('','NS','a.ns'); $q[]=array('','NS','b.ns'); $q[]=array('','A','1.1.1.1'); $q[]=array('www','CNAME',''); $q[]=array('*','A','3.2.1.4'); $q[]=array('','MX','mxs.ns',5); $q[]=array('','SOA','a.ns domain.lazutov.net. 5 3600 3600 604800 0');  \/\/\u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0432 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 geo $zones['q.qq']['def']=$q; $q=unsetrr($q,'','A'); \/\/ \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0434\u043b\u044f \u0433\u0435\u043e $zones['q.qq']['i0']=$q; $zones['q.qq']['i0'][]=array('','A','127.0.0.1'); $zones['q.qq']['i1']=$q; $zones['q.qq']['i1'][]=array('','A','127.1.99.123');  foreach ($zones as $zone=&gt;$locdata){   foreach ($locdata as $loc=&gt;$rrs){ \t$sub=array(); \t$all=$rrs;     \/\/ \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u043c \u0437\u043e\u043d\u0443 &quot;\u043f\u043e\u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u043d\u043e&quot; \tforeach ($rrs as $r){  \tif ($r[0]==='*'){    \t$sub['*'][]=$r;  \t} elseif ($r[0]==='') {    \t$sub['@'][]=$r;  \t} else {    \t$sub[$r[0]][]=$r;  \t} \t}     \/\/ \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0444\u0430\u0439\u043b\u044b \u0438 \u0437\u0430\u043f\u0438\u0448\u0435\u043c. \tforeach ($sub as $sd=&gt;$rrs){  \t$rrs=formdata($zone,$rrs);  \tforeach ($rrs as $type=&gt;$v) writedown($zone,$loc,$sd,$type,$v); \t}   } } \/\/ \u043f\u0438\u0448\u0435\u043c \u0438\u043d\u0444\u043b\u043e\u043c\u0430\u0446\u0438\u044e \u043e \u0437\u0430\u043f\u0438\u0441\u044f\u0445 \u0442\u0438\u043f\u0430 type \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u0430 sub \u0437\u043e\u043d\u044b zone \u0432 \u0433\u0435\u043e loc function writedown ($zone,$loc,$sub,$type,$data){   $fn=&quot;{$sub}.{$zone}&quot;;   if ($sub=='@') $fn=$zone;   elseif ($sub=='*') $fn='_'.$zone;   opt(&quot;{$zone}\/{$loc}\/{$fn}_{$type}&quot;,$data); } \/\/\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 json (\u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u043f\u043e \u0442\u0438\u043f\u0430\u043c) function formdata($zone,$rrs){   $r=array();   foreach ($rrs as $rr){ \t$qname=(empty($rr[0])?$zone:&quot;{$rr[0]}.{$zone}&quot;); \t$pr=(empty($rr[3])?0:intval($rr[3])); \t$c=(empty($rr[2])?$zone:$rr[2]); \t$rd=array('qname'=&gt;$qname,'qtype'=&gt;$rr[1],'content'=&gt;$c,'ttl'=&gt;TTL,'priority'=&gt;$pr,'domain_id'=&gt;-1); \tif ($rr[0]==='*' AND $rd['qtype']!=='ANY') $rd['qname']='%WC%'; \t$r[$rr[1]][]=$rd; \t$r['ANY'][]=$rd;   }   return $r; }  function unsetrr($data,$src,$type){     foreach ($data as $k=&gt;$v) if ($v[0]===$src and $v[1]===$type) unset($data[$k]);     return $data; } \/\/ \u0442\u0438\u043f\u0430 OutPuT \u0434\u0430\u043d\u043d\u044b\u0445 data \u0432 \u0444\u0430\u0439\u043b file \u0441 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u043e\u043c add function opt($file,$data,$add=NULL){     $r=array('result'=&gt;$data);     if (!empty($add)) $r['desc']=$add;     $dir=dirname(__FILE__);     $cd=dirname($dir.'\/'.$file) ;     \/\/echo &quot;{$cd}\\n&quot;;     if (!is_dir($cd)) mkdir($cd );     file_put_contents($dir.'\/'.$file.'.jsn',json_encode($r) ); } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041f\u043b\u044e\u0441\u044b \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f:  <\/p>\n<ul>\n<li>\u201c\u0413\u043e\u0440\u044f\u0447\u0435\u0435\u201d \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\/\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 <\/li>\n<li>\u041e\u0442\u0434\u0430\u0447\u0430 \u0441\u0442\u0430\u0442\u0438\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 nginx \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0430 \u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430 <\/li>\n<li>nginx_geo \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0443\u0447\u0435\u043d \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d<\/li>\n<li>\u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0435\u043d\u044c\u043a\u043e \u0434\u043e\u0431\u0430\u043b\u0435\u043d\u0438\u0435\u043c \u043d\u043e\u0432\u044b\u0445 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u043e\u0440\u043a\u0435\u0440\u043e\u0432 pdns, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0441\u0432\u044f\u0437\u043a\u0438 pdns+nginx<\/li>\n<li>\u0414\u043e\u043f\u0438\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0432\u0430\u0448\u0438 \u043d\u0443\u0436\u0434\u044b \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 nginx<\/li>\n<\/ul>\n<p>  \u041d\u043e \u044f \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044e \u0435\u0433\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u043c \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0432 \u0431\u043e\u0435\u0432\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0438 \u0432\u043e\u0442 \u043f\u043e\u0447\u0435\u043c\u0443:   <\/p>\n<ul>\n<li>remote_backend \u043f\u043e\u043a\u0430 \u0447\u0442\u043e unstable \u0438 pdns \u043d\u0443\u0436\u043d\u043e <a href=\"http:\/\/doc.powerdns.com\/html\/remotebackend.html#remotebackend-compiling\">\u043f\u0440\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438\u0437 \u0442\u0440\u0430\u043d\u043a\u0430<\/a> \u0441 \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439<\/li>\n<li>\u044f \u0434\u0430\u0436\u0435 \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0432 RFC<\/li>\n<\/ul>\n<p>  \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435!<\/p>\n<p>  \u0412\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u0440\u043e\u0448\u0443 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u0430 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u2014 \u0432 \u043b\u0438\u0447\u043a\u0443.<br \/>  \u0416\u0435\u043b\u0430\u044e\u0449\u0438\u0435 \u043f\u043e\u043f\u0438\u0430\u0440\u0438\u0442\u044c \u0441\u0432\u043e\u0439 DNS \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0443\u0439\u0442\u0435 \u0432 <a href=\"http:\/\/habrahabr.ru\/hub\/i_am_advertising\/\">\u0441\u0432\u043e\u0439 \u0434\u0432\u043e\u0440<\/a>, \u0438\u0437\u0432\u0438\u043d\u0438\u0442\u0435.    \t \t\t   \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/178727\/\"> http:\/\/habrahabr.ru\/post\/178727\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u041e\u0431\u043e\u0436\u0430\u044e \u0437\u0430\u0434\u0430\u0447\u0438 \u201c\u043d\u0430 \u0441\u0442\u044b\u043a\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439\u201d, \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0442\u0430\u043a\u0438\u0445.<br \/>  \u0417\u0430\u0434\u0430\u0447\u0430:  <\/p>\n<ul>\n<li>\u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c geoDNS*<\/li>\n<li>c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e wildcard (*.some.tst. A 1.2.3.4)<\/li>\n<li>\u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0435\u043d\u044f\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0437\u043e\u043d \u043d\u0430 \u0445\u043e\u0434\u0443, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0437\u043e\u043d\u044b \u043f\u0430\u0447\u043a\u0430\u043c\u0438<\/li>\n<li>\u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u201c\u043c\u0438\u043c\u043e \u043a\u0435\u0448\u0430\u201d<\/li>\n<li>\u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0442\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0440\u0435\u0430\u043a\u0442\u043e\u0440 (\u0441 \u043b\u043e\u043a\u0430\u043b\u0445\u043e\u0441\u0442\u0430, \u0430 \u043d\u0435 \u043a\u0443\u0447\u0438 proxy\/VDS)<\/li>\n<\/ul>\n<p>  *) \u043f\u043e\u0434 geoDNS \u044f \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\/\u0410-\u0437\u0430\u043f\u0438\u0441\u0438 (\u0434\u043b\u044f \u0421\u0428\u0410 \u043e\u0442\u0434\u0430\u0451\u0442\u0441\u044f IP \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 \u0421\u0428\u0410, \u0434\u043b\u044f \u0421\u041d\u0413 \u2014 \u0432 \u043c\u043e\u0441\u043a\u0432\u0435, \u0434\u043b\u044f \u0415\u0421 \u2014 \u0432 \u0415\u0432\u0440\u043e\u043f\u0435 &#8230;)<\/p>\n<p>  \u0421\u0442\u0430\u0442\u044c\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442  <\/p>\n<ul>\n<li>\u043c\u0435\u0442\u043e\u0434 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 geoDNS<\/li>\n<li>\u043c\u0435\u0442\u043e\u0434 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/li>\n<li>\u044d\u0441\u043a\u0438\u0437\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u201c\u0447\u0438\u0441\u0442\u043e\u043c nginx\u201d<\/li>\n<\/ul>\n<p>  \u0415\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043f\u0440\u0438\u0447\u0451\u043c \u0436\u0435 \u0437\u0434\u0435\u0441\u044c nginx, \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-178727","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/178727","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=178727"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/178727\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=178727"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=178727"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=178727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}