Ошибка при использовании DNS-сервера Google в качестве решателя в задачах Amazon ECS - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь использовать prerender с сервисом amazon ecs, который использует определение задачи (nginx + app).Здесь nginx работает как сторонняя машина и действует как прокси перед приложением.Я пытаюсь использовать службу prerender для некоторых ботов.

Я пытался добавить 8.8.8.8 в контейнер resolv.conf и на хост-машине (ec2) resolv.conf, но он не работает.

ec2 resolv.conf

; generated by /sbin/dhclient-script
search ap-south-1.compute.internal
options timeout:2 attempts:5
nameserver 10.0.0.2
nameserver 8.8.8.8 

контейнер resolv.conf

search ap-south-1.compute.internal
nameserver 8.8.8.8
options timeout:2 attempts:5

nginx conf

location / {
resolver 8.8.8.8 ipv6=off;



if ($http_user_agent ~* "googlebot") {

      set $prerender 1;
    }
if ($prerender = 1) {
  #setting prerender as a variable forces DNS resolution since nginx caches IPs and doesnt play well with load balancing
  set $prerender "service.prerender.io";
  rewrite .* $host$request_uri? break;
  proxy_pass http://$prerender;
}

...
}

task-definition.json

[
    {
    "name"     : "${container_name}-nginx",
    "hostname" : "${container_name}-nginx",
    "dnsServers": ["8.8.8.8","8.8.4.4","1.1.1.1"],
    "image"    : "${nginx_proxy_image}",
    "cpu"      : 128,
    "memory"   : 192,
    "links"    : [
      "${container_name}"
    ],
    "portMappings" : [
      {
        "protocol"      : "tcp",
        "containerPort" : ${container_port},
        "hostPort"      : 0
      }
    ],
    "essential" : true
  },
  {
    "name": "${container_name}",
    "image": "${image_url}",
    "essential": true,
    "portMappings": [
      {
        "containerPort": 3000,
        "hostPort": 0
      }
    ],
    "hostname": "${name}",
    "memory": 4092,
    "cpu": 512
  }
]

Ошибка: 1. Я не могу выкопать URL-адрес службы prerender с хост-машины или контейнера ec2./ # dig @ 8.8.8.8 service.prerender.io

; <<>> DiG 9.12.3 <<>> @8.8.8.8 service.prerender.io
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

После настройки google DNS в определении задачи.Я не могу получить доступ к Интернету из контейнера.

Я получаю ошибку 5xx при выполнении запроса curl к службе.

curl --header "User-Agent: googlebot"https://example.com

Какой идеальный способ для этого?

...