Почему ASP.NET 5 в Linux требует kestrel?
Я пытаюсь понять весь стек Web/ Framework / приложения при установке ASP.NET 5 на Linux.
Все инструкции, которые я прочитал, включая эту, на самом деле не ответили на мой вопрос:
Почему сервер Nginx не может работать без Kestrel, как здесь: http://www.mono-project.com/docs/web/fastcgi/nginx/?
Или я далеко. Я пытаюсь понять, в чем причина этой структуры:
.NET Core(or mono) --> Kestrel --> Nginx
Разве Kestrel не просто еще один веб-сервер, такой как Nginx, но с гораздо меньшими возможностями?
2 ответа
Ядро ASP.NET (ASP.Net 5) не требует Kestrel!
Вы правы, Kestrel - это простой HTTP-сервер с небольшим набором функций. Вы можете запустить ASP.NET Core без Kestrel в Linux или Mac, но у вас должен быть HTTP-сервер или сервер fastCGI.
Nginx используется как обратный прокси-сервер для статического содержимого в целом, и вы также можете включить сжатие gzip для вашего динамического содержимого. Кестрел не имеет этой функции.
Вы также можете написать свой собственный HTTP-сервер с конкретными функциями HTTP, которые вам нужны (например, HTTP2).
Necromancing.
Да, это действительно требует Кестрелла.
Как говорит Агуа, теоретически он также может быть запущен на каком-то другом http-сервере, кроме Kestrell, который может работать на.NET Core или через FastCGI.
Однако, AFAIK, Kestrell - единственный http-сервер в настоящее время, который действительно может это сделать.
А поскольку AFAIK, FastCGI-сервер / библиотека, написанная на .NET Core, (пока) не существует.
Прямо сейчас, если вы хотите использовать.NET Core с nginx или Apache, все, что вы можете сделать, - это обратный прокси-запрос к kestrell.