Нужен ли обратный прокси на ядре ASP.NET?
Мы задаемся вопросом, требуется ли обратный прокси-сервер для большинства случаев использования, и будем признательны за дополнительную информацию.
Документация Kerstel/Nginx утверждает: "Kestrel отлично подходит для обслуживания динамического контента из ASP.NET Core. Однако возможности веб-обслуживания не так богаты, как у серверов, таких как IIS, Apache или Nginx. Обратный прокси-сервер может разгрузиться работа, такая как обслуживание статического контента, кэширование запросов, сжатие запросов и завершение HTTPS с HTTP-сервера. Обратный прокси-сервер может находиться на выделенном компьютере или может быть развернут рядом с HTTP-сервером ". https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-2.2
Может ли кто-нибудь поделиться некоторыми соображениями, если это действительно актуально в настоящее время?
В нашем случае мы используем экземпляры Docker с внешней балансировкой нагрузки (AWS ALB). В каждом экземпляре Docker запущено как Nginx, так и наше основное приложение ASP.NET. Мы не могли понять точные преимущества использования Nginx.
Обслуживание статического контента Поскольку мы используем внешнюю CRN (AWS CloudFront), я предполагаю, что статическое кэширование на самом деле не дает никаких реальных преимуществ, не так ли?
Кэширование запросов Я считаю, что это то же самое, что и обслуживание статического контента, поскольку динамический контент не кэшируется в большинстве сценариев (в нашем случае - во всех сценариях).
Сжатие запросов ASP.NET Core имеет промежуточное программное обеспечение для сжатия ответов, однако заявляет: "Производительность промежуточного программного обеспечения, вероятно, не будет соответствовать производительности серверных модулей. Сервер HTTP.sys и сервер Kestrel в настоящее время не предлагают встроенное сжатие". служба поддержки.". Возможно, для проверки этого утверждения могут быть созданы некоторые контрольные показатели. https://docs.microsoft.com/en-us/aspnet/core/performance/response-compression?view=aspnetcore-2.2
Завершение HTTPS с HTTP-сервера Я предполагаю, что большинство клиентов, имеющих балансировщики нагрузки, могут пропустить эту часть, так как при необходимости можно завершить HTTPS-завершение на балансировщике нагрузки.
Спасибо! Эффи
0 ответов
В этой документации не говорится, что вам "следует" запускать ASP.NET Core / Kestrel за обратным прокси-сервером, просто в расширенных сценариях он может быть полезен, поскольку Kestrel не имеет некоторых функций, которые могут быть у других веб-серверов.
Если у вас нет дополнительного обратного прокси-сервера nginx, вам не нужно его использовать.
Например, Kestrel только недавно внедрила API-интерфейсы для изменения определенных параметров соединения на лету без перезагрузки - это полезно для переключения сертификатов, полученных через ACME (например, сервис Let's Encrypt).
Это сильно зависит от архитектуры системы, нужен ли обратный прокси-сервер или нет, но вам не нужно его развертывать, если вам не нужна конкретная функция.