AWS EBS - Rails5 / nginx - robots.txt не найдена ошибка (404) - PullRequest
0 голосов
/ 26 октября 2018

Я развернул довольно стандартное приложение Rails 5 с AWS EBS. Мой /robots.txt не подлежит повторной проверке и запросы на его URL возвращают ошибку 404.

Я поместил его в папку /public вместе со страницами 404.html, 422.html и 500.html, которые правильно обслуживаются nginx.

Любая подсказка о том, что может быть не так? Что мне проверить?

EB CLI 3.14.6 (Python 2.7.1)

Ruby 2.4.3 / Rails 5.1.4 / Puma (gem) 3.7

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

В AWS EB с PUMA статические файлы в общей папке хранятся в / public / url. Поисковые роботы ожидают, что файл будет доступен по адресу /robots.txt

Я изо всех сил пытался реализовать маршрутизацию к этим файлам и вместо этого остановился на более «рельсовом» способе реализации этого.

1) config / rout.rb

get "/robots.txt", to: "robots#show"

2) app / controllers / robots_controller.rb

class RobotsController < ApplicationController
  def show
    render "show", layout: false, content_type: "text/plain"
  end 
end

3) app / views / robots_txts / show.erb

User-agent: *
Disallow: /
0 голосов
/ 14 ноября 2018

Похоже, очень похожий вопрос был задан 4 года назад на официальном форуме AWS: https://forums.aws.amazon.com/thread.jspa?threadID=150904

Только через 4 года смелый парень из AWS пришел с ответом! Здесь под цитируемым ответом:

Привет, привет! Я Крис, новый человек на платформах Ruby в Elastic Beanstalk. Посещая эту тему сегодня, похоже, что много боли (а также путаницы!) от бобового стебля Ruby + Puma's обработка статических файлов.

Краткий обзор: когда этот поток был создан (в 2014 году), Beanstalk был по сути, используя Nginx по умолчанию, который поставляется с Amazon Linux, с только некоторые изменения в журнале для поддержки мониторинга работоспособности. Тот порождал эту тему, так как обычно ожидается, что статические файлы будут обслуживал веб-сервер при его наличии.

Итак, люди пошли и исправили папку / assets. Большой! К сожалению, возникло недоразумение с просьбой исправить обслуживает папку / public - вместо этого служит платформа Beanstalk Puma вещи в '/ public' из '/ pubilc', а не из '/'. Это определенно проблема, поэтому вот некоторые обходные пути:

Обходной путь 1: Включение обслуживания статических активов. Да, это пустая трата потоки приложений здесь или там, но если ваш вариант использования только robots.txt и favicon.ico, вы грабите только пару приложений потоки. Я бы выбрал этот, если бы я не запускал свои серверы приложений горячий.

Обходной путь 2: Напишите .ebextension для изменения конфигурации Nginx служить / публично в /. Я нахожусь в процессе написания одного, поэтому я буду придерживаться это как ответ на это, когда я дал ему мысль, которую он заслуживает. Немного из текущих может служить кодом вашего приложения, поэтому дважды проверьте конфигурации, если вы уже сделали этот обходной путь.

Я создал проблему отслеживания для команды с таким уровнем детализации, поэтому мы будем работать, чтобы исправить это. Спасибо всем за ваш отзыв - Мы хотели бы лучше обслуживать вас и ваши приложения.

С тех пор больше нет ответов; Если кто-нибудь знает "aws-одобренный способ" для редактирования конфигурации nginx с помощью .ebextensions, давайте разместим его здесь, пожалуйста! :)

...