Пользовательский обработчик списка каталогов в ruby ​​для nginx - PullRequest
2 голосов
/ 11 апреля 2011

Я только что нашел этот вопрос на сервере, который подробно описывает, как создать собственный обработчик списка каталогов для nginx с помощью php-скрипта.Я хотел бы сделать то же самое, но с помощью сценария ruby.

location /test/ {
  error_page 404 = /webdir/handler.php;
  return 404;
}

Мой вопрос: я бы просто сделал то же самое, но ссылался бы на handler.rb вместо handler.php, я имею в виду, будетnginx автоматически знает, как оценить скрипт ruby ​​и вывести его в браузер пользователя?Поэтому я просто создаю сценарий, который выполняет несколько вызовов puts, или каков предпочтительный способ сделать это?Я не очень разбираюсь в стойке или синатре, но разве в такой ситуации они пригодятся?У меня установлен пассажир.

Скорее всего, я бы хотел включить в это css, чтобы список выглядел красиво, и я бы предпочел создать структуру в haml или erb.Я не возражаю, если шаблон структуры и CSS должны быть встроены в один и тот же handler.rb, хотя, если есть возможность разделить его на файлы, которые будут прекрасны.

Наконец, я хотел бы этоприменить к каталогу mysite.com/downloads/, а также ко всем его подкаталогам.Какая будет предпочтительная директива location?Я видел, что

location ~ /$

должен заставить его работать во всех каталогах, но я хочу, чтобы он применялся только к downloads/ и любым его подкаталогам.Я думаю, это была бы простая модификация регулярного выражения, но я бы предпочел быть уверенным.

Спасибо, я ценю это.

1 Ответ

0 голосов
/ 11 апреля 2011

Нет, nginx не будет автоматически оценивать скрипты Ruby.Лучше всего настроить обработчик как приложение Rack в некотором роде (почти все веб-платформы Ruby или обработчики являются приложениями Rack в наши дни, включая Sinatra и Rails), а затем использовать пассажирский или сервер Ruby, такой как Unicorn, в качествеПрокси nginx.

Учитывая ваши дополнительные требования, я бы начал с Синатры.

...