Отличия между nginx и тонким

Это вопрос новичков вокруг nginx и тонкий в среде рельсов. При чтении/обучении на рельсах я часто слышу о nginx, а тонкость - отличная комбинация для сайта рельсов. Читая описания каждого из них, они оба описывают себя как веб-серверы, поэтому я немного запутался в том, что комбинация приносит в таблицу. Если бы кто-нибудь мог кратко описать, что они собой представляют и как они дополняют друг друга, я был бы очень благодарен.

Спасибо!

Ответы

Ответ 1

Типичное развертывание небольшого приложения будет иметь Nginx (или Apache) и несколько серверов Thin (или Mongrel, Unicorn и т.д.), работающих на одной машине.

Nginx получает каждый запрос. Затем он обслуживает и статические файлы напрямую (css, js, images, cached stuff). Если запрос требует обработки, он передает запрос на процесс рельсов (Thin).

Таким образом, ваши (относительно) медленные серверы приложений освобождаются от обслуживания статических файлов, а ваш веб-сервер обеспечивает некоторую балансировку нагрузки.

Преимущество Nginx/Thin над чем-то вроде Apache/Mongrel заключается в том, что Nginx/Thin может напрямую связываться через сокет unix, удаляя служебные данные об общении через стек tcp/ip.

Ответ 2

Thin - это сервер приложений, а Nginx - веб-сервер.

Из http://www.javaworld.com/javaqa/2002-08/01-qa-0823-appvswebserver.html

Сервер приложений предоставляет бизнес-логику клиентским приложениям через различные протоколы, возможно, включая HTTP. Хотя веб-сервер имеет дело с отправкой HTML для отображения в веб-браузере, сервер приложений предоставляет доступ к бизнес-логика для использования клиентскими прикладными программами. Прикладная программа может использовать эту логику так же, как она вызовет метод для объекта (или функцию в процедурном мире).

Ответ 3

Говоря о незнании (я никогда не использовал Thin), вполне нормально смешивать nginx и сервер приложений вместе, используя nginx для обслуживания статического контента и выступая в качестве обратного прокси для сервера приложений.

Это упрощает смешение смехотворно быстрого статического контента, используемого с выбранным сервером приложений (который варьируется между языками программирования), все из одного и того же адреса: порт.