Windows built in http server

Содержание
  1. Activate Web Server on Windows 10 for HTTP or FTP, how to?
  2. An simple example how to activate IIS Web Server or FTP Server on Windows 10, this solution is also for Windows 8.1 and Seven!
  3. Windows built in http server
  4. Постройте свое будущее с Windows Server 2019
  5. Windows Server Summit 2020
  6. Microsoft Ignite
  7. Виртуальное мероприятие, посвященное гибридному облаку Azure
  8. Best lightweight web server (only static content) for Windows [closed]
  9. 8 Answers 8
  10. Python 3
  11. Реализация веб-сервера HTTP.sys в ASP.NET Core HTTP.sys web server implementation in ASP.NET Core
  12. Условия для применения HTTP.sys When to use HTTP.sys
  13. Поддержка HTTP/2 HTTP/2 support
  14. Проверка подлинности в режиме ядра с помощью Kerberos Kernel mode authentication with Kerberos
  15. Способы применения HTTP.sys How to use HTTP.sys
  16. Настройка приложения ASP.NET Core для использования HTTP.sys Configure the ASP.NET Core app to use HTTP.sys
  17. Настройка Windows Server Configure Windows Server
  18. Сценарии использования прокси-сервера и подсистемы балансировки нагрузки Proxy server and load balancer scenarios
  19. Расширенные возможности HTTP/2 для поддержки gRPC Advanced HTTP/2 features to support gRPC
  20. Трейлеры Trailers
  21. Reset Reset
  22. Дополнительные ресурсы Additional resources
  23. Условия для применения HTTP.sys When to use HTTP.sys
  24. Поддержка HTTP/2 HTTP/2 support
  25. Проверка подлинности в режиме ядра с помощью Kerberos Kernel mode authentication with Kerberos
  26. Способы применения HTTP.sys How to use HTTP.sys
  27. Настройка приложения ASP.NET Core для использования HTTP.sys Configure the ASP.NET Core app to use HTTP.sys
  28. Настройка Windows Server Configure Windows Server
  29. Сценарии использования прокси-сервера и подсистемы балансировки нагрузки Proxy server and load balancer scenarios
  30. Дополнительные ресурсы Additional resources
  31. Условия для применения HTTP.sys When to use HTTP.sys
  32. Поддержка HTTP/2 HTTP/2 support
  33. Проверка подлинности в режиме ядра с помощью Kerberos Kernel mode authentication with Kerberos
  34. Способы применения HTTP.sys How to use HTTP.sys
  35. Настройка приложения ASP.NET Core для использования HTTP.sys Configure the ASP.NET Core app to use HTTP.sys
  36. Настройка Windows Server Configure Windows Server
  37. Сценарии использования прокси-сервера и подсистемы балансировки нагрузки Proxy server and load balancer scenarios
  38. Дополнительные ресурсы Additional resources
  39. Условия для применения HTTP.sys When to use HTTP.sys
  40. Поддержка HTTP/2 HTTP/2 support
  41. Проверка подлинности в режиме ядра с помощью Kerberos Kernel mode authentication with Kerberos
  42. Способы применения HTTP.sys How to use HTTP.sys
  43. Настройка приложения ASP.NET Core для использования HTTP.sys Configure the ASP.NET Core app to use HTTP.sys
  44. Настройка Windows Server Configure Windows Server

Activate Web Server on Windows 10 for HTTP or FTP, how to?

An simple example how to activate IIS Web Server or FTP Server on Windows 10, this solution is also for Windows 8.1 and Seven!

See also: ► sleep mode in windows 10 ► Wrong decimal symbol ► Windows 10 desktop icons are so big

(Image-1) HTTP FTP WEB Server on Windows 10!

To enable or disable the Web Server or FTP Server is suitable for Windows 10 Pro, Enterprise, Home, Windows 8.1, Windows 8, Windows-Server 2019, 2016, 2012, Windows 7 Basic, Professional, Starter, Ultimate

Internet Information Services is the web server software included with most Windows and also from Windows 10 PRO. You can also install a web server to serve dynamic content!

File Transfer Protocol (FTP) extensions are now integrated into IIS 8 and can be managed using the IIS Manager on Windows 10.

The File Transfer Protocol is a protocol used to transfer files and folder over the Internet. People commonly use File Transfer Protocol to make files available for others to download, but you can also use File Transfer Protocol to upload personal webpages for building a website or for putting images on a picture sharing site.

Microsoft also equips the desktop version of Windows with Internet Information Services. This makes it possible to turn any notebook into a web server with the Home Edition. Although the configuration is a bit more complex than many free HTTP servers, but the IIS are better integrated into the system.

Windows built in http server

This web server is designed to aid application development. It may also be useful for testing purposes or for application demonstrations that are run in controlled environments. It is not intended to be a full-featured web server. It should not be used on a public network.

The web server runs only one single-threaded process, so PHP applications will stall if a request is blocked.

URI requests are served from the current working directory where PHP was started, unless the -t option is used to specify an explicit document root. If a URI request does not specify a file, then either index.php or index.html in the given directory are returned. If neither file exists, the lookup for index.php and index.html will be continued in the parent directory and so on until one is found or the document root has been reached. If an index.php or index.html is found, it is returned and $_SERVER[‘PATH_INFO’] is set to the trailing part of the URI. Otherwise a 404 response code is returned.

If a PHP file is given on the command line when the web server is started it is treated as a «router» script. The script is run at the start of each HTTP request. If this script returns false , then the requested resource is returned as-is. Otherwise the script’s output is returned to the browser.

Standard MIME types are returned for files with extensions: .3gp, .apk, .avi, .bmp, .css, .csv, .doc, .docx, .flac, .gif, .gz, .gzip, .htm, .html, .ics, .jpe, .jpeg, .jpg, .js, .kml, .kmz, .m4a, .mov, .mp3, .mp4, .mpeg, .mpg, .odp, .ods, .odt, .oga, .ogg, .ogv, .pdf, .pdf, .png, .pps, .pptx, .qt, .svg, .swf, .tar, .text, .tif, .txt, .wav, .webm, .wmv, .xls, .xlsx, .xml, .xsl, .xsd, and .zip.

Changelog: Supported MIME Types (file extensions)

Version Description
5.5.12 .xml, .xsl, and .xsd
5.5.7 .3gp, .apk, .avi, .bmp, .csv, .doc, .docx, .flac, .gz, .gzip, .ics, .kml, .kmz, .m4a, .mp3, .mp4, .mpg, .mpeg, .mov, .odp, .ods, .odt, .oga, .pdf, .pptx, .pps, .qt, .swf, .tar, .text, .tif, .wav, .wmv, .xls, .xlsx, and .zip
5.5.5 .pdf
5.4.11 .ogg, .ogv, and .webm
5.4.4 .htm and .svg
Changelog
Version Description
7.4.0 You can configure the built-in webserver to fork multiple workers in order to test code that requires multiple concurrent requests to the built-in webserver. Set the PHP_CLI_SERVER_WORKERS environment variable to the number of desired workers before starting the server. This is not supported on Windows.

This experimental feature is not intended for production usage. Generally, the built-in Web Server is not intended for production usage.

Example #1 Starting the web server

Постройте свое будущее с Windows Server 2019

Реализовать любую стратегию развития вашей организации поможет Windows Server 2019 — операционная система, которая объединяет локальные среды с сервисами Azure, поддерживает гибридные сценарии использования и позволяет извлечь максимальную выгоду из существующих инвестиций.

Windows Server Summit 2020

Узнайте о новейших функциях и возможностях Windows Server — непосредственно от специалистов Microsoft. Посмотрите демонстрации и ознакомьтесь с рекомендациями по модернизации рабочих нагрузок независимо от того, где вы используете Windows Server: в локальной среде, в гибридной среде или в Azure.

Microsoft Ignite

Конференция Ignite прошла 22–24 сентября 2020 г. — это было наше первое цифровое мероприятие! Посмотрите выступления об инновационных возможностях Windows Server, которые вы пропустили.

Виртуальное мероприятие, посвященное гибридному облаку Azure

Узнайте, как создать эффективную гибридную и многооблачную стратегию, отвечающую современным меняющимся требованиям бизнеса, и подготовиться к будущему в рамках этого бесплатного онлайн-мероприятия продолжительностью 60 минут.

Best lightweight web server (only static content) for Windows [closed]

Want to improve this question? Update the question so it’s on-topic for Stack Overflow.

Closed 8 years ago .

I got application server running in Windows – IIS6.0 with Zend Server to execute PHP. I am looking for lightweight static content only web server on this same machine which will relive IIS form handling static content and increase performance.

It need to be only static content web server – maximum small and maximum effective – lighttpd seems too big because allow to FastCGI.

I am looking for: Windows, static content only, fast, and lightweight.

I am using Windows Server 2003.

8 Answers 8

  • single executable
  • very small memory footprint
  • allows multiple worker threads
  • easy to install as service
  • configurable with a configuration file if required

You can use Python as a quick way to host static content. On Windows, there are many options for running Python, I’ve personally used CygWin and ActivePython.

To use Python as a simple HTTP server just change your working directory to the folder with your static content and type python -m SimpleHTTPServer 8000 , everything in the directory will be available at http:/localhost:8000/

Python 3

To do this with Python, 3.4.1 (and probably other versions of Python 3), use the http.server module:

The smallest one I know is lighttpd.

Security, speed, compliance, and flexibility — all of these describe lighttpd (pron. lighty) which is rapidly redefining efficiency of a webserver; as it is designed and optimized for high performance environments. With a small memory footprint compared to other web-servers, effective management of the cpu-load, and advanced feature set (FastCGI, SCGI, Auth, Output-Compression, URL-Rewriting and many more) lighttpd is the perfect solution for every server that is suffering load problems. And best of all it’s Open Source licensed under the revised BSD license.

Edit: removed Windows version link, now a spam/malware plugin site.

Реализация веб-сервера HTTP.sys в ASP.NET Core HTTP.sys web server implementation in ASP.NET Core

Авторы: Том Дикстра (Tom Dykstra) и Крис Росс (Chris Ross) By Tom Dykstra and Chris Ross

HTTP.sys — это веб-сервер для ASP.NET Core, который запускается только в Windows. HTTP.sys is a web server for ASP.NET Core that only runs on Windows. HTTP.sys является альтернативой серверу Kestrel, предлагая некоторые функции, отсутствующие в Kestrel. HTTP.sys is an alternative to Kestrel server and offers some features that Kestrel doesn’t provide.

HTTP.sys не подходит для использования с IIS или IIS Express из-за несовместимости с модулем ASP.NET Core. HTTP.sys isn’t compatible with the ASP.NET Core Module and can’t be used with IIS or IIS Express.

HTTP.sys поддерживает следующие функции: HTTP.sys supports the following features:

  • Аутентификация Windows Windows Authentication
  • Совместное использование портов Port sharing
  • Использование HTTPS с SNI HTTPS with SNI
  • Использование HTTP/2 через TLS (Windows 10 и более поздние версии) HTTP/2 over TLS (Windows 10 or later)
  • Прямая передача файлов Direct file transmission
  • Кэширование откликов Response caching
  • Использование WebSockets (Windows 8 и более поздние версии) WebSockets (Windows 8 or later)

Поддерживаемые версии Windows: Supported Windows versions:

  • Windows 7 и более поздние версии Windows 7 or later
  • Windows Server 2008 R2 и более поздние версии Windows Server 2008 R2 or later

Условия для применения HTTP.sys When to use HTTP.sys

HTTP.sys удобно использовать с развертываниями в таких случаях: HTTP.sys is useful for deployments where:

когда нужно подключить сервер к Интернету напрямую без использования служб IIS; There’s a need to expose the server directly to the Internet without using IIS.

когда для внутренних развертываний нужна функция, отсутствующая в Kestrel. An internal deployment requires a feature not available in Kestrel. Дополнительные сведения см. в разделе Сравнение Kestrel и HTTP.sys For more information, see Kestrel vs. HTTP.sys

HTTP.sys — это проверенная технология, которая защищает от многих типов атак, а также обеспечивает надежность, безопасность и масштабируемость полнофункционального веб-сервера. HTTP.sys is mature technology that protects against many types of attacks and provides the robustness, security, and scalability of a full-featured web server. Сами службы IIS выполняются в качестве HTTP-прослушивателя поверх HTTP.sys. IIS itself runs as an HTTP listener on top of HTTP.sys.

Поддержка HTTP/2 HTTP/2 support

Протокол HTTP/2 включен для приложений ASP.NET Core, если выполнены следующие базовые требования: HTTP/2 is enabled for ASP.NET Core apps if the following base requirements are met:

  • установлена ОС Windows Server 2016 либо Windows 10 или более поздних версий; Windows Server 2016/Windows 10 or later
  • установлено подключение с поддержкой согласования протокола уровня приложений (ALPN); Application-Layer Protocol Negotiation (ALPN) connection
  • Подключение TLS 1.2 или более поздней версии. TLS 1.2 or later connection

Если установлено подключение HTTP/2, HttpRequest.Protocol возвращает HTTP/2 . If an HTTP/2 connection is established, HttpRequest.Protocol reports HTTP/2 .

Протокол HTTP/2 включен по умолчанию. HTTP/2 is enabled by default. Если не удается установить подключение HTTP/2, применяется резервный вариант HTTP/1.1. If an HTTP/2 connection isn’t established, the connection falls back to HTTP/1.1. В будущих версиях Windows будут доступны флаги конфигурации HTTP/2, в том числе возможность отключения HTTP/2 с использованием HTTP.sys. In a future release of Windows, HTTP/2 configuration flags will be available, including the ability to disable HTTP/2 with HTTP.sys.

Проверка подлинности в режиме ядра с помощью Kerberos Kernel mode authentication with Kerberos

HTTP.sys делегирует задачи в проверку подлинности в режиме ядра с помощью протокола проверки подлинности Kerberos. HTTP.sys delegates to kernel mode authentication with the Kerberos authentication protocol. Проверка подлинности в режиме пользователя не поддерживается с Kerberos и HTTP.sys. User mode authentication isn’t supported with Kerberos and HTTP.sys. Необходимо использовать учетную запись компьютера для расшифровки маркера/билета Kerberos, полученного из Active Directory и переадресованного клиентом на сервер для проверки подлинности пользователя. The machine account must be used to decrypt the Kerberos token/ticket that’s obtained from Active Directory and forwarded by the client to the server to authenticate the user. Зарегистрируйте имя субъекта-службы (SPN) для узла, а не пользователя приложения. Register the Service Principal Name (SPN) for the host, not the user of the app.

Способы применения HTTP.sys How to use HTTP.sys

Настройка приложения ASP.NET Core для использования HTTP.sys Configure the ASP.NET Core app to use HTTP.sys

Вызовите метод расширения UseHttpSys при создании узла, указав все необходимые параметры HttpSysOptions. Call the UseHttpSys extension method when building the host, specifying any required HttpSysOptions. В следующем примере для параметров задаются значения по умолчанию: The following example sets options to their default values:

Дополнительная настройка HTTP.sys выполняется с помощью параметров реестра. Additional HTTP.sys configuration is handled through registry settings.

Параметры HTTP.sys HTTP.sys options

Свойство. Property Описание Description Значение по умолчанию Default
AllowSynchronousIO Указывает, разрешен ли синхронные операции ввода-вывода для HttpContext.Request.Body и HttpContext.Response.Body . Control whether synchronous input/output is allowed for the HttpContext.Request.Body and HttpContext.Response.Body . false
Authentication.AllowAnonymous Authentication.AllowAnonymous Разрешает анонимные запросы. Allow anonymous requests. true
Authentication.Schemes Authentication.Schemes Указывает разрешенные схемы аутентификации. Specify the allowed authentication schemes. Может быть изменен в любое время до удаления прослушивателя. May be modified at any time prior to disposing the listener. Предоставляет значения, полученные при перечислении AuthenticationSchemes: Basic , Kerberos , Negotiate , None и NTLM . Values are provided by the AuthenticationSchemes enum: Basic , Kerberos , Negotiate , None , and NTLM . None
EnableResponseCaching Выполняет попытку кэшировать режим ядра для ответов с допустимыми заголовками. Attempt kernel-mode caching for responses with eligible headers. Ответ не может включать заголовки Set-Cookie , Vary или Pragma . The response may not include Set-Cookie , Vary , or Pragma headers. Он должен включать заголовок Cache-Control со значением public , а также значение shared-max-age или max-age заголовок Expires . It must include a Cache-Control header that’s public and either a shared-max-age or max-age value, or an Expires header. true
Http503Verbosity Поведение HTTP.sys при отклонении запросов в соответствии с условиями регулирования. The HTTP.sys behavior when rejecting requests due to throttling conditions. Http503VerbosityLevel.
Basic Http503VerbosityLevel.
Basic
MaxAccepts Максимальное число одновременных попыток. The maximum number of concurrent accepts. 5 × Environment.
ProcessorCount 5 × Environment.
ProcessorCount
MaxConnections Максимальное число попыток установить одновременное подключение. The maximum number of concurrent connections to accept. Использует -1 для бесконечных циклов. Use -1 for infinite. Использует null для работы с параметром реестра на уровне компьютера. Use null to use the registry’s machine-wide setting. null
(уровень компьютер (machine-wide
значение) setting)
MaxRequestBodySize См. раздел MaxRequestBodySize. See the MaxRequestBodySize section. 30 000 000 байт. 30000000 bytes
(

28.6 MB)

RequestQueueLimit Максимально допустимое число запросов в очереди. The maximum number of requests that can be queued. 1000 1000
RequestQueueMode Указывает, отвечает ли сервер за создание и настройку очереди запросов или он должен подключаться к существующей очереди. This indicates whether the server is responsible for creating and configuring the request queue, or if it should attach to an existing queue.
Большинство имеющихся параметров конфигурации не применяются при подключении к существующей очереди. Most existing configuration options do not apply when attaching to an existing queue.
RequestQueueMode.Create
RequestQueueName Имя очереди запросов HTTP.sys. The name of the HTTP.sys request queue. null (анонимная очередь) null (Anonymous queue)
ThrowWriteExceptions Указывает, следует ли вызывать исключение или завершать работу нормально, когда запись текста ответа завершается ошибкой из-за отключения клиента. Indicate if response body writes that fail due to client disconnects should throw exceptions or complete normally. false
Нормальное завершение. (complete normally)
Timeouts Предоставляет конфигурацию TimeoutManager HTTP.sys, которую также можно настроить в реестре. Expose the HTTP.sys TimeoutManager configuration, which may also be configured in the registry. Дополнительные сведения о каждом параметре, включая значения по умолчанию, см. здесь: Follow the API links to learn more about each setting, including default values:

  • TimeoutManager.DrainEntityBody — время, выделенное API сервера HTTP для очистки текста сущности при активном подключении. TimeoutManager.DrainEntityBody: Time allowed for the HTTP Server API to drain the entity body on a Keep-Alive connection.
  • TimeoutManager.EntityBody — время, выделенное на получение текста сущности запроса. TimeoutManager.EntityBody: Time allowed for the request entity body to arrive.
  • TimeoutManager.HeaderWait — время, выделенное для API сервера HTTP для выполнения синтаксического анализа заголовка запроса. TimeoutManager.HeaderWait: Time allowed for the HTTP Server API to parse the request header.
  • TimeoutManager.IdleConnection — время, допустимое для неактивного подключения. TimeoutManager.IdleConnection: Time allowed for an idle connection.
  • TimeoutManager.MinSendBytesPerSecond — минимальная скорость отправки ответа. TimeoutManager.MinSendBytesPerSecond: The minimum send rate for the response.
  • TimeoutManager.RequestQueue — время, выделенное для пребывания запроса в очереди до его получения приложением. TimeoutManager.RequestQueue: Time allowed for the request to remain in the request queue before the app picks it up.
UrlPrefixes Указывает UrlPrefixCollection для регистрации с использованием HTTP.sys. Specify the UrlPrefixCollection to register with HTTP.sys. Удобнее всего использовать параметр UrlPrefixCollection.Add, который добавляет префикс к коллекции. The most useful is UrlPrefixCollection.Add, which is used to add a prefix to the collection. Могут быть изменены в любое время до удаления прослушивателя. These may be modified at any time prior to disposing the listener.

MaxRequestBodySize MaxRequestBodySize

Максимально допустимый размер текста запроса в байтах. The maximum allowed size of any request body in bytes. Если задано значение null , размер максимального запроса не ограничен. When set to null , the maximum request body size is unlimited. Это ограничение не оказывает влияния на обновленные подключения, которые не имеют ограничений. This limit has no effect on upgraded connections, which are always unlimited.

Чтобы переопределить это ограничение в приложении ASP.NET Core MVC для IActionResult , рекомендуется использовать атрибут RequestSizeLimitAttribute в методе действия: The recommended method to override the limit in an ASP.NET Core MVC app for a single IActionResult is to use the RequestSizeLimitAttribute attribute on an action method:

При попытке приложения настроить ограничение для запроса после того, как приложение начало считывать запрос, возникает исключение. An exception is thrown if the app attempts to configure the limit on a request after the app has started reading the request. Свойство IsReadOnly указывает на то, что свойство MaxRequestBodySize находится в состоянии только для чтения и настраивать ограничение слишком поздно. An IsReadOnly property can be used to indicate if the MaxRequestBodySize property is in a read-only state, meaning it’s too late to configure the limit.

Если приложение должно переопределять MaxRequestBodySize по запросу, используйте IHttpMaxRequestBodySizeFeature: If the app should override MaxRequestBodySize per-request, use the IHttpMaxRequestBodySizeFeature:

При использовании Visual Studio убедитесь, что приложение не настроено для запуска IIS или IIS Express. If using Visual Studio, make sure the app isn’t configured to run IIS or IIS Express.

В Visual Studio профиль запуска по умолчанию использует IIS Express. In Visual Studio, the default launch profile is for IIS Express. Чтобы запустить проект как консольное приложение, измените выбранный профиль вручную, как показано на следующем снимке экрана. To run the project as a console app, manually change the selected profile, as shown in the following screen shot:

Настройка Windows Server Configure Windows Server

Определите, какие порты нужно открыть для приложения, и используйте брандмауэр Windows или командлет PowerShell New-NetFirewallRule, чтобы открыть порты брандмауэра для доступа трафика к HTTP.sys. Determine the ports to open for the app and use Windows Firewall or the New-NetFirewallRule PowerShell cmdlet to open firewall ports to allow traffic to reach HTTP.sys. В следующих командах и конфигурации приложения используется порт 443. In the following commands and app configuration, port 443 is used.

При развертывании на виртуальных машинах Azure откройте эти порты в группе безопасности сети. When deploying to an Azure VM, open the ports in the Network Security Group. В следующих командах и конфигурации приложения используется порт 443. In the following commands and app configuration, port 443 is used.

При необходимости получите и установите сертификаты X.509. Obtain and install X.509 certificates, if required.

В Windows создайте самозаверяющие сертификаты с помощью командлета PowerShell New-SelfSignedCertificate. On Windows, create self-signed certificates using the New-SelfSignedCertificate PowerShell cmdlet. Примеры, которые не поддерживаются, см. в разделе UpdateIISExpressSSLForChrome.ps1. For an unsupported example, see UpdateIISExpressSSLForChrome.ps1.

Установите самозаверяющие или подписанные центром сертификации сертификаты в хранилище сервера, выбрав Локальный компьютер > Личный. Install either self-signed or CA-signed certificates in the server’s Local Machine > Personal store.

Если приложение является развертыванием, не зависящим от платформы, установите NET Core или .NET Framework (или обе платформы, если это приложение .NET Core, предназначенное для .NET Framework). If the app is a framework-dependent deployment, install .NET Core, .NET Framework, or both (if the app is a .NET Core app targeting the .NET Framework).

  • .NET Core. Если приложению требуется .NET Core, загрузите установщик среды выполнения .NET Core на странице скачивания .NET Core и запустите его. .NET Core: If the app requires .NET Core, obtain and run the .NET Core Runtime installer from .NET Core Downloads. Не устанавливайте полный пакет SDK на сервере. Don’t install the full SDK on the server.
  • Платформа .NET Framework. Если приложению требуется .NET Framework, см. руководство по установке. .NET Framework: If the app requires .NET Framework, see the .NET Framework installation guide. Установите требуемую платформу .NET Framework. Install the required .NET Framework. Установщик последней версии .NET Framework доступен на странице скачивания .NET. The installer for the latest .NET Framework is available from the .NET Core Downloads page.

Если приложение развертывается автономно, в его развертывание включена среда выполнения. If the app is a self-contained deployment, the app includes the runtime in its deployment. Устанавливать .NET Framework на сервере не нужно. No framework installation is required on the server.

Настройте URL-адреса и порты в приложении. Configure URLs and ports in the app.

По умолчанию платформа ASP.NET Core привязана к http://localhost:5000 . By default, ASP.NET Core binds to http://localhost:5000 . Чтобы настроить префиксы URL-адресов и порты, используйте следующие параметры: To configure URL prefixes and ports, options include:

  • UseUrls
  • Аргументы командной строки urls . urls command-line argument
  • Переменная среды ASPNETCORE_URLS . ASPNETCORE_URLS environment variable
  • UrlPrefixes

В следующем примере кода показано, как использовать UrlPrefixes с локальным IP-адресом сервера 10.0.0.4 через порт 443. The following code example shows how to use UrlPrefixes with the server’s local IP address 10.0.0.4 on port 443:

Преимущество UrlPrefixes заключается в том, что при неправильном формате префиксов сразу же создается сообщение об ошибке. An advantage of UrlPrefixes is that an error message is generated immediately for improperly formatted prefixes.

Этот параметр в UrlPrefixes переопределяет параметры UseUrls / urls / ASPNETCORE_URLS . The settings in UrlPrefixes override UseUrls / urls / ASPNETCORE_URLS settings. Таким образом, преимущество переменных среды UseUrls , urls и ASPNETCORE_URLS заключается в возможности быстрого переключения между Kestrel и HTTP.sys. Therefore, an advantage of UseUrls , urls , and the ASPNETCORE_URLS environment variable is that it’s easier to switch between Kestrel and HTTP.sys.

Не используйте привязки с подстановочными знаками ( http://*:80/ и http://+:80 ) на верхнем уровне. Top-level wildcard bindings ( http://*:80/ and http://+:80 ) should not be used. Они создают уязвимости и ставят под угрозу безопасность приложения. Top-level wildcard bindings create app security vulnerabilities. Сюда относятся и строгие, и нестрогие подстановочные знаки. This applies to both strong and weak wildcards. Вместо подстановочных знаков используйте имена узлов или IP-адреса в явном виде. Use explicit host names or IP addresses rather than wildcards. Привязки с подстановочными знаками на уровне дочерних доменов (например, *.mysub.com ) не создают таких угроз безопасности, если вы полностью контролируете родительский домен (в отличие от варианта *.com , создающего уязвимость). Subdomain wildcard binding (for example, *.mysub.com ) isn’t a security risk if you control the entire parent domain (as opposed to *.com , which is vulnerable). Дополнительные сведения см. в стандарте RFC 7230, раздел 5.4, Host. For more information, see RFC 7230: Section 5.4: Host.

Предварительно зарегистрируйте префиксы URL-адресов на сервере. Preregister URL prefixes on the server.

Встроенным средством для настройки сервера HTTP.sys является netsh.exe. The built-in tool for configuring HTTP.sys is netsh.exe. С помощью netsh.exe можно зарезервировать префиксы URL-адресов и назначить сертификаты X.509. netsh.exe is used to reserve URL prefixes and assign X.509 certificates. Для использования этого средства требуются права администратора. The tool requires administrator privileges.

Используйте средство netsh.exe для регистрации URL-адреса приложения. Use the netsh.exe tool to register URLs for the app:

  • . Полное имя URL-адреса. : The fully qualified Uniform Resource Locator (URL). Не используйте привязки с подстановочными знаками. Don’t use a wildcard binding. Используйте допустимое имя узла или локальный IP-адрес. Use a valid hostname or local IP address. URL-адрес должен включать косую черту в конце.The URL must include a trailing slash.
  • . Определяет имя пользователя или группы пользователей. : Specifies the user or user-group name.

В следующем примере сервер имеет локальный IP-адрес 10.0.0.4 . In the following example, the local IP address of the server is 10.0.0.4 :

При регистрации URL-адреса средство возвращает ответ URL reservation successfully added . When a URL is registered, the tool responds with URL reservation successfully added .

Чтобы удалить зарегистрированный URL-адрес, используйте команду delete urlacl . To delete a registered URL, use the delete urlacl command:

Зарегистрируйте сертификаты X.509 на сервере. Register X.509 certificates on the server.

Используйте средство netsh.exe для регистрации сертификатов приложения. Use the netsh.exe tool to register certificates for the app:

    . Задает локальный IP-адрес для привязки. : Specifies the local IP address for the binding. Не используйте привязки с подстановочными знаками. Don’t use a wildcard binding. Используйте допустимый IP-адрес. Use a valid IP address.

. Указывает порт для привязки.

: Specifies the port for the binding.

  • . Отпечаток сертификата X.509. : The X.509 certificate thumbprint.
  • . Глобальный уникальный идентификатор приложения, задаваемый разработчиком в информационных целях. : A developer-generated GUID to represent the app for informational purposes.
  • В справочных целях храните GUID в приложении в виде тега пакета. For reference purposes, store the GUID in the app as a package tag:

    • В Visual Studio сделайте следующее: In Visual Studio:
      • Откройте свойства проекта приложения, щелкнув приложение правой кнопкой мыши в обозревателе решений и выбрав Properties (Свойства). Open the app’s project properties by right-clicking on the app in Solution Explorer and selecting Properties.
      • Перейдите на вкладку Package (Пакет). Select the Package tab.
      • Введите GUID, который вы указали в поле Tags (Теги). Enter the GUID that you created in the Tags field.
    • Если Visual Studio не используется: When not using Visual Studio:

        Откройте файл проекта приложения. Open the app’s project file.

        в новую или существующую группу

        с GUID, который вы создали. Add a

        property to a new or existing

        with the GUID that you created:

        В следующем примере: In the following example:

        • Локальный IP-адрес сервера — 10.0.0.4 . The local IP address of the server is 10.0.0.4 .
        • Сетевой генератор случайных GUID задает значение appid . An online random GUID generator provides the appid value.

        При регистрации сертификата средство возвращает ответ SSL Certificate successfully added . When a certificate is registered, the tool responds with SSL Certificate successfully added .

        Чтобы удалить регистрацию сертификата, используйте команду delete sslcert . To delete a certificate registration, use the delete sslcert command:

        Дополнительные сведения см. в справочной документации по netsh.exe: Reference documentation for netsh.exe:

        Запустите приложение. Run the app.

        Если выполнена привязка к localhost через HTTP (не HTTPS) с номером порта больше 1024, для запуска приложения права администратора не требуются. Administrator privileges aren’t required to run the app when binding to localhost using HTTP (not HTTPS) with a port number greater than 1024. При других конфигурациях (например, при использовании локального IP-адреса или привязки к порту 443) для запуска приложения требуются права администратора. For other configurations (for example, using a local IP address or binding to port 443), run the app with administrator privileges.

        Приложение отвечает по общедоступному IP-адресу сервера. The app responds at the server’s public IP address. В этом примере подключение к серверу происходит через Интернет по общедоступному IP-адресу 104.214.79.47 сервера. In this example, the server is reached from the Internet at its public IP address of 104.214.79.47 .

        В этом примере используется сертификат разработки. A development certificate is used in this example. После обхода предупреждения о ненадежном сертификате браузера происходит безопасная загрузка страницы. The page loads securely after bypassing the browser’s untrusted certificate warning.

        Сценарии использования прокси-сервера и подсистемы балансировки нагрузки Proxy server and load balancer scenarios

        Для приложений, размещенных с помощью файла HTTP.sys, которые взаимодействуют с запросами из Интернета или корпоративной сети, может потребоваться дополнительная настройка при размещении за прокси-серверами и подсистемами балансировки нагрузки. For apps hosted by HTTP.sys that interact with requests from the Internet or a corporate network, additional configuration might be required when hosting behind proxy servers and load balancers. Дополнительные сведения см. в разделе Настройка ASP.NET Core для работы с прокси-серверами и подсистемами балансировки нагрузки. For more information, see Configure ASP.NET Core to work with proxy servers and load balancers.

        Расширенные возможности HTTP/2 для поддержки gRPC Advanced HTTP/2 features to support gRPC

        Дополнительные возможности HTTP/2 в HTTP.SYS поддерживают gRPC, включая трейлеры ответов и отправку кадров сброса. Additional HTTP/2 features in HTTP.sys support gRPC, including support for response trailers and sending reset frames.

        Требования для выполнения gRPC в HTTP.sys: Requirements to run gRPC with HTTP.sys:

        • Сборка 19041.508 или более поздняя ОС Windows 10. Windows 10, OS Build 19041.508 or later
        • Подключение TLS 1.2 или более поздней версии. TLS 1.2 or later connection

        Трейлеры Trailers

        Трейлеры HTTP похожи на заголовки HTTP, за исключением того, что они отправляются после отправки текста ответа. HTTP Trailers are similar to HTTP Headers, except they are sent after the response body is sent. Для IIS и HTTP.sys поддерживаются только трейлеры ответов HTTP/2. For IIS and HTTP.sys, only HTTP/2 response trailers are supported.

        В приведенном выше примере кода: In the preceding example code:

        • SupportsTrailers обеспечивает поддержку трейлеров для ответа; SupportsTrailers ensures that trailers are supported for the response.
        • DeclareTrailer добавляет заданное имя трейлера в заголовок ответа Trailer . DeclareTrailer adds the given trailer name to the Trailer response header. Объявлять трейлеры ответа необязательно, но рекомендуется. Declaring a response’s trailers is optional, but recommended. Вызов DeclareTrailer должен производиться перед отправкой заголовков ответа. If DeclareTrailer is called, it must be before the response headers are sent.
        • AppendTrailer добавляет трейлер. AppendTrailer appends the trailer.

        Reset Reset

        Сброс позволяет серверу сбросить запрос HTTP/2 с указанным кодом ошибки. Reset allows for the server to reset a HTTP/2 request with a specified error code. Сброшенный запрос считается прерванным. A reset request is considered aborted.

        Reset в предыдущем примере кода задает код ошибки INTERNAL_ERROR . Reset in the preceding code example specifies the INTERNAL_ERROR error code. Дополнительные сведения о кодах ошибок HTTP/2 см. в соответствующем разделе спецификации HTTP/2. For more information about HTTP/2 error codes, visit the HTTP/2 specification error code section.

        Дополнительные ресурсы Additional resources

        HTTP.sys — это веб-сервер для ASP.NET Core, который запускается только в Windows. HTTP.sys is a web server for ASP.NET Core that only runs on Windows. HTTP.sys является альтернативой серверу Kestrel, предлагая некоторые функции, отсутствующие в Kestrel. HTTP.sys is an alternative to Kestrel server and offers some features that Kestrel doesn’t provide.

        HTTP.sys не подходит для использования с IIS или IIS Express из-за несовместимости с модулем ASP.NET Core. HTTP.sys isn’t compatible with the ASP.NET Core Module and can’t be used with IIS or IIS Express.

        HTTP.sys поддерживает следующие функции: HTTP.sys supports the following features:

        • Аутентификация Windows Windows Authentication
        • Совместное использование портов Port sharing
        • Использование HTTPS с SNI HTTPS with SNI
        • Использование HTTP/2 через TLS (Windows 10 и более поздние версии) HTTP/2 over TLS (Windows 10 or later)
        • Прямая передача файлов Direct file transmission
        • Кэширование откликов Response caching
        • Использование WebSockets (Windows 8 и более поздние версии) WebSockets (Windows 8 or later)

        Поддерживаемые версии Windows: Supported Windows versions:

        • Windows 7 и более поздние версии Windows 7 or later
        • Windows Server 2008 R2 и более поздние версии Windows Server 2008 R2 or later

        Условия для применения HTTP.sys When to use HTTP.sys

        HTTP.sys удобно использовать с развертываниями в таких случаях: HTTP.sys is useful for deployments where:

        когда нужно подключить сервер к Интернету напрямую без использования служб IIS; There’s a need to expose the server directly to the Internet without using IIS.

        когда для внутренних развертываний нужна функция, отсутствующая в Kestrel, например аутентификация Windows. An internal deployment requires a feature not available in Kestrel, such as Windows Authentication.

        HTTP.sys — это проверенная технология, которая защищает от многих типов атак, а также обеспечивает надежность, безопасность и масштабируемость полнофункционального веб-сервера. HTTP.sys is mature technology that protects against many types of attacks and provides the robustness, security, and scalability of a full-featured web server. Сами службы IIS выполняются в качестве HTTP-прослушивателя поверх HTTP.sys. IIS itself runs as an HTTP listener on top of HTTP.sys.

        Поддержка HTTP/2 HTTP/2 support

        Протокол HTTP/2 включен для приложений ASP.NET Core, если выполнены следующие базовые требования: HTTP/2 is enabled for ASP.NET Core apps if the following base requirements are met:

        • установлена ОС Windows Server 2016 либо Windows 10 или более поздних версий; Windows Server 2016/Windows 10 or later
        • установлено подключение с поддержкой согласования протокола уровня приложений (ALPN); Application-Layer Protocol Negotiation (ALPN) connection
        • Подключение TLS 1.2 или более поздней версии. TLS 1.2 or later connection

        Если установлено подключение HTTP/2, HttpRequest.Protocol возвращает HTTP/2 . If an HTTP/2 connection is established, HttpRequest.Protocol reports HTTP/2 .

        Протокол HTTP/2 включен по умолчанию. HTTP/2 is enabled by default. Если не удается установить подключение HTTP/2, применяется резервный вариант HTTP/1.1. If an HTTP/2 connection isn’t established, the connection falls back to HTTP/1.1. В будущих версиях Windows будут доступны флаги конфигурации HTTP/2, в том числе возможность отключения HTTP/2 с использованием HTTP.sys. In a future release of Windows, HTTP/2 configuration flags will be available, including the ability to disable HTTP/2 with HTTP.sys.

        Проверка подлинности в режиме ядра с помощью Kerberos Kernel mode authentication with Kerberos

        HTTP.sys делегирует задачи в проверку подлинности в режиме ядра с помощью протокола проверки подлинности Kerberos. HTTP.sys delegates to kernel mode authentication with the Kerberos authentication protocol. Проверка подлинности в режиме пользователя не поддерживается с Kerberos и HTTP.sys. User mode authentication isn’t supported with Kerberos and HTTP.sys. Необходимо использовать учетную запись компьютера для расшифровки маркера/билета Kerberos, полученного из Active Directory и переадресованного клиентом на сервер для проверки подлинности пользователя. The machine account must be used to decrypt the Kerberos token/ticket that’s obtained from Active Directory and forwarded by the client to the server to authenticate the user. Зарегистрируйте имя субъекта-службы (SPN) для узла, а не пользователя приложения. Register the Service Principal Name (SPN) for the host, not the user of the app.

        Способы применения HTTP.sys How to use HTTP.sys

        Настройка приложения ASP.NET Core для использования HTTP.sys Configure the ASP.NET Core app to use HTTP.sys

        Вызовите метод расширения UseHttpSys при создании узла, указав все необходимые параметры HttpSysOptions. Call the UseHttpSys extension method when building the host, specifying any required HttpSysOptions. В следующем примере для параметров задаются значения по умолчанию: The following example sets options to their default values:

        Дополнительная настройка HTTP.sys выполняется с помощью параметров реестра. Additional HTTP.sys configuration is handled through registry settings.

        Параметры HTTP.sys HTTP.sys options

        Свойство. Property Описание Description Значение по умолчанию Default
        AllowSynchronousIO AllowSynchronousIO Указывает, разрешен ли синхронные операции ввода-вывода для HttpContext.Request.Body и HttpContext.Response.Body . Control whether synchronous input/output is allowed for the HttpContext.Request.Body and HttpContext.Response.Body . false
        Authentication.AllowAnonymous Authentication.AllowAnonymous Разрешает анонимные запросы. Allow anonymous requests. true
        Authentication.Schemes Authentication.Schemes Указывает разрешенные схемы аутентификации. Specify the allowed authentication schemes. Может быть изменен в любое время до удаления прослушивателя. May be modified at any time prior to disposing the listener. Предоставляет значения, полученные при перечислении AuthenticationSchemes: Basic , Kerberos , Negotiate , None и NTLM . Values are provided by the AuthenticationSchemes enum: Basic , Kerberos , Negotiate , None , and NTLM . None
        EnableResponseCaching EnableResponseCaching Выполняет попытку кэшировать режим ядра для ответов с допустимыми заголовками. Attempt kernel-mode caching for responses with eligible headers. Ответ не может включать заголовки Set-Cookie , Vary или Pragma . The response may not include Set-Cookie , Vary , or Pragma headers. Он должен включать заголовок Cache-Control со значением public , а также значение shared-max-age или max-age заголовок Expires . It must include a Cache-Control header that’s public and either a shared-max-age or max-age value, or an Expires header. true
        MaxAccepts Максимальное число одновременных попыток. The maximum number of concurrent accepts. 5 × Environment.
        ProcessorCount 5 × Environment.
        ProcessorCount
        MaxConnections Максимальное число попыток установить одновременное подключение. The maximum number of concurrent connections to accept. Использует -1 для бесконечных циклов. Use -1 for infinite. Использует null для работы с параметром реестра на уровне компьютера. Use null to use the registry’s machine-wide setting. null
        (уровень компьютер (machine-wide
        значение) setting)
        MaxRequestBodySize См. раздел MaxRequestBodySize. See the MaxRequestBodySize section. 30 000 000 байт. 30000000 bytes
        (

        28.6 MB)

        RequestQueueLimit Максимально допустимое число запросов в очереди. The maximum number of requests that can be queued. 1000 1000
        ThrowWriteExceptions Указывает, следует ли вызывать исключение или завершать работу нормально, когда запись текста ответа завершается ошибкой из-за отключения клиента. Indicate if response body writes that fail due to client disconnects should throw exceptions or complete normally. false
        Нормальное завершение. (complete normally)
        Timeouts Предоставляет конфигурацию TimeoutManager HTTP.sys, которую также можно настроить в реестре. Expose the HTTP.sys TimeoutManager configuration, which may also be configured in the registry. Дополнительные сведения о каждом параметре, включая значения по умолчанию, см. здесь: Follow the API links to learn more about each setting, including default values:

        • TimeoutManager.DrainEntityBody — время, выделенное API сервера HTTP для очистки текста сущности при активном подключении. TimeoutManager.DrainEntityBody: Time allowed for the HTTP Server API to drain the entity body on a Keep-Alive connection.
        • TimeoutManager.EntityBody — время, выделенное на получение текста сущности запроса. TimeoutManager.EntityBody: Time allowed for the request entity body to arrive.
        • TimeoutManager.HeaderWait — время, выделенное для API сервера HTTP для выполнения синтаксического анализа заголовка запроса. TimeoutManager.HeaderWait: Time allowed for the HTTP Server API to parse the request header.
        • TimeoutManager.IdleConnection — время, допустимое для неактивного подключения. TimeoutManager.IdleConnection: Time allowed for an idle connection.
        • TimeoutManager.MinSendBytesPerSecond — минимальная скорость отправки ответа. TimeoutManager.MinSendBytesPerSecond: The minimum send rate for the response.
        • TimeoutManager.RequestQueue — время, выделенное для пребывания запроса в очереди до его получения приложением. TimeoutManager.RequestQueue: Time allowed for the request to remain in the request queue before the app picks it up.
        UrlPrefixes Указывает UrlPrefixCollection для регистрации с использованием HTTP.sys. Specify the UrlPrefixCollection to register with HTTP.sys. Удобнее всего использовать параметр UrlPrefixCollection.Add, который добавляет префикс к коллекции. The most useful is UrlPrefixCollection.Add, which is used to add a prefix to the collection. Могут быть изменены в любое время до удаления прослушивателя. These may be modified at any time prior to disposing the listener.

        MaxRequestBodySize MaxRequestBodySize

        Максимально допустимый размер текста запроса в байтах. The maximum allowed size of any request body in bytes. Если задано значение null , размер максимального запроса не ограничен. When set to null , the maximum request body size is unlimited. Это ограничение не оказывает влияния на обновленные подключения, которые не имеют ограничений. This limit has no effect on upgraded connections, which are always unlimited.

        Чтобы переопределить это ограничение в приложении ASP.NET Core MVC для IActionResult , рекомендуется использовать атрибут RequestSizeLimitAttribute в методе действия: The recommended method to override the limit in an ASP.NET Core MVC app for a single IActionResult is to use the RequestSizeLimitAttribute attribute on an action method:

        При попытке приложения настроить ограничение для запроса после того, как приложение начало считывать запрос, возникает исключение. An exception is thrown if the app attempts to configure the limit on a request after the app has started reading the request. Свойство IsReadOnly указывает на то, что свойство MaxRequestBodySize находится в состоянии только для чтения и настраивать ограничение слишком поздно. An IsReadOnly property can be used to indicate if the MaxRequestBodySize property is in a read-only state, meaning it’s too late to configure the limit.

        Если приложение должно переопределять MaxRequestBodySize по запросу, используйте IHttpMaxRequestBodySizeFeature: If the app should override MaxRequestBodySize per-request, use the IHttpMaxRequestBodySizeFeature:

        При использовании Visual Studio убедитесь, что приложение не настроено для запуска IIS или IIS Express. If using Visual Studio, make sure the app isn’t configured to run IIS or IIS Express.

        В Visual Studio профиль запуска по умолчанию использует IIS Express. In Visual Studio, the default launch profile is for IIS Express. Чтобы запустить проект как консольное приложение, измените выбранный профиль вручную, как показано на следующем снимке экрана. To run the project as a console app, manually change the selected profile, as shown in the following screen shot:

        Настройка Windows Server Configure Windows Server

        Определите, какие порты нужно открыть для приложения, и используйте брандмауэр Windows или командлет PowerShell New-NetFirewallRule, чтобы открыть порты брандмауэра для доступа трафика к HTTP.sys. Determine the ports to open for the app and use Windows Firewall or the New-NetFirewallRule PowerShell cmdlet to open firewall ports to allow traffic to reach HTTP.sys. В следующих командах и конфигурации приложения используется порт 443. In the following commands and app configuration, port 443 is used.

        При развертывании на виртуальных машинах Azure откройте эти порты в группе безопасности сети. When deploying to an Azure VM, open the ports in the Network Security Group. В следующих командах и конфигурации приложения используется порт 443. In the following commands and app configuration, port 443 is used.

        При необходимости получите и установите сертификаты X.509. Obtain and install X.509 certificates, if required.

        В Windows создайте самозаверяющие сертификаты с помощью командлета PowerShell New-SelfSignedCertificate. On Windows, create self-signed certificates using the New-SelfSignedCertificate PowerShell cmdlet. Примеры, которые не поддерживаются, см. в разделе UpdateIISExpressSSLForChrome.ps1. For an unsupported example, see UpdateIISExpressSSLForChrome.ps1.

        Установите самозаверяющие или подписанные центром сертификации сертификаты в хранилище сервера, выбрав Локальный компьютер > Личный. Install either self-signed or CA-signed certificates in the server’s Local Machine > Personal store.

        Если приложение является развертыванием, не зависящим от платформы, установите NET Core или .NET Framework (или обе платформы, если это приложение .NET Core, предназначенное для .NET Framework). If the app is a framework-dependent deployment, install .NET Core, .NET Framework, or both (if the app is a .NET Core app targeting the .NET Framework).

        • .NET Core. Если приложению требуется .NET Core, загрузите установщик среды выполнения .NET Core на странице скачивания .NET Core и запустите его. .NET Core: If the app requires .NET Core, obtain and run the .NET Core Runtime installer from .NET Core Downloads. Не устанавливайте полный пакет SDK на сервере. Don’t install the full SDK on the server.
        • Платформа .NET Framework. Если приложению требуется .NET Framework, см. руководство по установке. .NET Framework: If the app requires .NET Framework, see the .NET Framework installation guide. Установите требуемую платформу .NET Framework. Install the required .NET Framework. Установщик последней версии .NET Framework доступен на странице скачивания .NET. The installer for the latest .NET Framework is available from the .NET Core Downloads page.

        Если приложение развертывается автономно, в его развертывание включена среда выполнения. If the app is a self-contained deployment, the app includes the runtime in its deployment. Устанавливать .NET Framework на сервере не нужно. No framework installation is required on the server.

        Настройте URL-адреса и порты в приложении. Configure URLs and ports in the app.

        По умолчанию платформа ASP.NET Core привязана к http://localhost:5000 . By default, ASP.NET Core binds to http://localhost:5000 . Чтобы настроить префиксы URL-адресов и порты, используйте следующие параметры: To configure URL prefixes and ports, options include:

        • UseUrls
        • Аргументы командной строки urls . urls command-line argument
        • Переменная среды ASPNETCORE_URLS . ASPNETCORE_URLS environment variable
        • UrlPrefixes

        В следующем примере кода показано, как использовать UrlPrefixes с локальным IP-адресом сервера 10.0.0.4 через порт 443. The following code example shows how to use UrlPrefixes with the server’s local IP address 10.0.0.4 on port 443:

        Преимущество UrlPrefixes заключается в том, что при неправильном формате префиксов сразу же создается сообщение об ошибке. An advantage of UrlPrefixes is that an error message is generated immediately for improperly formatted prefixes.

        Этот параметр в UrlPrefixes переопределяет параметры UseUrls / urls / ASPNETCORE_URLS . The settings in UrlPrefixes override UseUrls / urls / ASPNETCORE_URLS settings. Таким образом, преимущество переменных среды UseUrls , urls и ASPNETCORE_URLS заключается в возможности быстрого переключения между Kestrel и HTTP.sys. Therefore, an advantage of UseUrls , urls , and the ASPNETCORE_URLS environment variable is that it’s easier to switch between Kestrel and HTTP.sys.

        Не используйте привязки с подстановочными знаками ( http://*:80/ и http://+:80 ) на верхнем уровне. Top-level wildcard bindings ( http://*:80/ and http://+:80 ) should not be used. Они создают уязвимости и ставят под угрозу безопасность приложения. Top-level wildcard bindings create app security vulnerabilities. Сюда относятся и строгие, и нестрогие подстановочные знаки. This applies to both strong and weak wildcards. Вместо подстановочных знаков используйте имена узлов или IP-адреса в явном виде. Use explicit host names or IP addresses rather than wildcards. Привязки с подстановочными знаками на уровне дочерних доменов (например, *.mysub.com ) не создают таких угроз безопасности, если вы полностью контролируете родительский домен (в отличие от варианта *.com , создающего уязвимость). Subdomain wildcard binding (for example, *.mysub.com ) isn’t a security risk if you control the entire parent domain (as opposed to *.com , which is vulnerable). Дополнительные сведения см. в стандарте RFC 7230, раздел 5.4, Host. For more information, see RFC 7230: Section 5.4: Host.

        Предварительно зарегистрируйте префиксы URL-адресов на сервере. Preregister URL prefixes on the server.

        Встроенным средством для настройки сервера HTTP.sys является netsh.exe. The built-in tool for configuring HTTP.sys is netsh.exe. С помощью netsh.exe можно зарезервировать префиксы URL-адресов и назначить сертификаты X.509. netsh.exe is used to reserve URL prefixes and assign X.509 certificates. Для использования этого средства требуются права администратора. The tool requires administrator privileges.

        Используйте средство netsh.exe для регистрации URL-адреса приложения. Use the netsh.exe tool to register URLs for the app:

        • . Полное имя URL-адреса. : The fully qualified Uniform Resource Locator (URL). Не используйте привязки с подстановочными знаками. Don’t use a wildcard binding. Используйте допустимое имя узла или локальный IP-адрес. Use a valid hostname or local IP address. URL-адрес должен включать косую черту в конце.The URL must include a trailing slash.
        • . Определяет имя пользователя или группы пользователей. : Specifies the user or user-group name.

        В следующем примере сервер имеет локальный IP-адрес 10.0.0.4 . In the following example, the local IP address of the server is 10.0.0.4 :

        При регистрации URL-адреса средство возвращает ответ URL reservation successfully added . When a URL is registered, the tool responds with URL reservation successfully added .

        Чтобы удалить зарегистрированный URL-адрес, используйте команду delete urlacl . To delete a registered URL, use the delete urlacl command:

        Зарегистрируйте сертификаты X.509 на сервере. Register X.509 certificates on the server.

        Используйте средство netsh.exe для регистрации сертификатов приложения. Use the netsh.exe tool to register certificates for the app:

          . Задает локальный IP-адрес для привязки. : Specifies the local IP address for the binding. Не используйте привязки с подстановочными знаками. Don’t use a wildcard binding. Используйте допустимый IP-адрес. Use a valid IP address.

        . Указывает порт для привязки.

        : Specifies the port for the binding.

      • . Отпечаток сертификата X.509. : The X.509 certificate thumbprint.
      • . Глобальный уникальный идентификатор приложения, задаваемый разработчиком в информационных целях. : A developer-generated GUID to represent the app for informational purposes.

      В справочных целях храните GUID в приложении в виде тега пакета. For reference purposes, store the GUID in the app as a package tag:

      • В Visual Studio сделайте следующее: In Visual Studio:
        • Откройте свойства проекта приложения, щелкнув приложение правой кнопкой мыши в обозревателе решений и выбрав Properties (Свойства). Open the app’s project properties by right-clicking on the app in Solution Explorer and selecting Properties.
        • Перейдите на вкладку Package (Пакет). Select the Package tab.
        • Введите GUID, который вы указали в поле Tags (Теги). Enter the GUID that you created in the Tags field.
      • Если Visual Studio не используется: When not using Visual Studio:

          Откройте файл проекта приложения. Open the app’s project file.

          в новую или существующую группу

          с GUID, который вы создали. Add a

          property to a new or existing

          with the GUID that you created:

          В следующем примере: In the following example:

          • Локальный IP-адрес сервера — 10.0.0.4 . The local IP address of the server is 10.0.0.4 .
          • Сетевой генератор случайных GUID задает значение appid . An online random GUID generator provides the appid value.

          При регистрации сертификата средство возвращает ответ SSL Certificate successfully added . When a certificate is registered, the tool responds with SSL Certificate successfully added .

          Чтобы удалить регистрацию сертификата, используйте команду delete sslcert . To delete a certificate registration, use the delete sslcert command:

          Дополнительные сведения см. в справочной документации по netsh.exe: Reference documentation for netsh.exe:

          Запустите приложение. Run the app.

          Если выполнена привязка к localhost через HTTP (не HTTPS) с номером порта больше 1024, для запуска приложения права администратора не требуются. Administrator privileges aren’t required to run the app when binding to localhost using HTTP (not HTTPS) with a port number greater than 1024. При других конфигурациях (например, при использовании локального IP-адреса или привязки к порту 443) для запуска приложения требуются права администратора. For other configurations (for example, using a local IP address or binding to port 443), run the app with administrator privileges.

          Приложение отвечает по общедоступному IP-адресу сервера. The app responds at the server’s public IP address. В этом примере подключение к серверу происходит через Интернет по общедоступному IP-адресу 104.214.79.47 сервера. In this example, the server is reached from the Internet at its public IP address of 104.214.79.47 .

          В этом примере используется сертификат разработки. A development certificate is used in this example. После обхода предупреждения о ненадежном сертификате браузера происходит безопасная загрузка страницы. The page loads securely after bypassing the browser’s untrusted certificate warning.

          Сценарии использования прокси-сервера и подсистемы балансировки нагрузки Proxy server and load balancer scenarios

          Для приложений, размещенных с помощью файла HTTP.sys, которые взаимодействуют с запросами из Интернета или корпоративной сети, может потребоваться дополнительная настройка при размещении за прокси-серверами и подсистемами балансировки нагрузки. For apps hosted by HTTP.sys that interact with requests from the Internet or a corporate network, additional configuration might be required when hosting behind proxy servers and load balancers. Дополнительные сведения см. в разделе Настройка ASP.NET Core для работы с прокси-серверами и подсистемами балансировки нагрузки. For more information, see Configure ASP.NET Core to work with proxy servers and load balancers.

          Дополнительные ресурсы Additional resources

          HTTP.sys — это веб-сервер для ASP.NET Core, который запускается только в Windows. HTTP.sys is a web server for ASP.NET Core that only runs on Windows. HTTP.sys является альтернативой серверу Kestrel, предлагая некоторые функции, отсутствующие в Kestrel. HTTP.sys is an alternative to Kestrel server and offers some features that Kestrel doesn’t provide.

          HTTP.sys не подходит для использования с IIS или IIS Express из-за несовместимости с модулем ASP.NET Core. HTTP.sys isn’t compatible with the ASP.NET Core Module and can’t be used with IIS or IIS Express.

          HTTP.sys поддерживает следующие функции: HTTP.sys supports the following features:

          • Аутентификация Windows Windows Authentication
          • Совместное использование портов Port sharing
          • Использование HTTPS с SNI HTTPS with SNI
          • Использование HTTP/2 через TLS (Windows 10 и более поздние версии) HTTP/2 over TLS (Windows 10 or later)
          • Прямая передача файлов Direct file transmission
          • Кэширование откликов Response caching
          • Использование WebSockets (Windows 8 и более поздние версии) WebSockets (Windows 8 or later)

          Поддерживаемые версии Windows: Supported Windows versions:

          • Windows 7 и более поздние версии Windows 7 or later
          • Windows Server 2008 R2 и более поздние версии Windows Server 2008 R2 or later

          Условия для применения HTTP.sys When to use HTTP.sys

          HTTP.sys удобно использовать с развертываниями в таких случаях: HTTP.sys is useful for deployments where:

          когда нужно подключить сервер к Интернету напрямую без использования служб IIS; There’s a need to expose the server directly to the Internet without using IIS.

          когда для внутренних развертываний нужна функция, отсутствующая в Kestrel, например аутентификация Windows. An internal deployment requires a feature not available in Kestrel, such as Windows Authentication.

          HTTP.sys — это проверенная технология, которая защищает от многих типов атак, а также обеспечивает надежность, безопасность и масштабируемость полнофункционального веб-сервера. HTTP.sys is mature technology that protects against many types of attacks and provides the robustness, security, and scalability of a full-featured web server. Сами службы IIS выполняются в качестве HTTP-прослушивателя поверх HTTP.sys. IIS itself runs as an HTTP listener on top of HTTP.sys.

          Поддержка HTTP/2 HTTP/2 support

          Протокол HTTP/2 включен для приложений ASP.NET Core, если выполнены следующие базовые требования: HTTP/2 is enabled for ASP.NET Core apps if the following base requirements are met:

          • установлена ОС Windows Server 2016 либо Windows 10 или более поздних версий; Windows Server 2016/Windows 10 or later
          • установлено подключение с поддержкой согласования протокола уровня приложений (ALPN); Application-Layer Protocol Negotiation (ALPN) connection
          • Подключение TLS 1.2 или более поздней версии. TLS 1.2 or later connection

          Если установлено подключение HTTP/2, HttpRequest.Protocol возвращает HTTP/2 . If an HTTP/2 connection is established, HttpRequest.Protocol reports HTTP/2 .

          Протокол HTTP/2 включен по умолчанию. HTTP/2 is enabled by default. Если не удается установить подключение HTTP/2, применяется резервный вариант HTTP/1.1. If an HTTP/2 connection isn’t established, the connection falls back to HTTP/1.1. В будущих версиях Windows будут доступны флаги конфигурации HTTP/2, в том числе возможность отключения HTTP/2 с использованием HTTP.sys. In a future release of Windows, HTTP/2 configuration flags will be available, including the ability to disable HTTP/2 with HTTP.sys.

          Проверка подлинности в режиме ядра с помощью Kerberos Kernel mode authentication with Kerberos

          HTTP.sys делегирует задачи в проверку подлинности в режиме ядра с помощью протокола проверки подлинности Kerberos. HTTP.sys delegates to kernel mode authentication with the Kerberos authentication protocol. Проверка подлинности в режиме пользователя не поддерживается с Kerberos и HTTP.sys. User mode authentication isn’t supported with Kerberos and HTTP.sys. Необходимо использовать учетную запись компьютера для расшифровки маркера/билета Kerberos, полученного из Active Directory и переадресованного клиентом на сервер для проверки подлинности пользователя. The machine account must be used to decrypt the Kerberos token/ticket that’s obtained from Active Directory and forwarded by the client to the server to authenticate the user. Зарегистрируйте имя субъекта-службы (SPN) для узла, а не пользователя приложения. Register the Service Principal Name (SPN) for the host, not the user of the app.

          Способы применения HTTP.sys How to use HTTP.sys

          Настройка приложения ASP.NET Core для использования HTTP.sys Configure the ASP.NET Core app to use HTTP.sys

          Ссылка на пакет в файле проекта не требуется при использовании метапакета Microsoft.AspNetCore.App (nuget.org). A package reference in the project file isn’t required when using the Microsoft.AspNetCore.App metapackage (nuget.org). Если метапакет Microsoft.AspNetCore.App не используется, добавьте ссылку на пакет в файл Microsoft.AspNetCore.Server.HttpSys. When not using the Microsoft.AspNetCore.App metapackage, add a package reference to Microsoft.AspNetCore.Server.HttpSys.

          Вызовите метод расширения UseHttpSys при создании узла, указав все необходимые параметры HttpSysOptions. Call the UseHttpSys extension method when building the host, specifying any required HttpSysOptions. В следующем примере для параметров задаются значения по умолчанию: The following example sets options to their default values:

          Дополнительная настройка HTTP.sys выполняется с помощью параметров реестра. Additional HTTP.sys configuration is handled through registry settings.

          Параметры HTTP.sys HTTP.sys options

          Свойство. Property Описание Description Значение по умолчанию Default
          AllowSynchronousIO AllowSynchronousIO Указывает, разрешен ли синхронные операции ввода-вывода для HttpContext.Request.Body и HttpContext.Response.Body . Control whether synchronous input/output is allowed for the HttpContext.Request.Body and HttpContext.Response.Body . true
          Authentication.AllowAnonymous Authentication.AllowAnonymous Разрешает анонимные запросы. Allow anonymous requests. true
          Authentication.Schemes Authentication.Schemes Указывает разрешенные схемы аутентификации. Specify the allowed authentication schemes. Может быть изменен в любое время до удаления прослушивателя. May be modified at any time prior to disposing the listener. Предоставляет значения, полученные при перечислении AuthenticationSchemes: Basic , Kerberos , Negotiate , None и NTLM . Values are provided by the AuthenticationSchemes enum: Basic , Kerberos , Negotiate , None , and NTLM . None
          EnableResponseCaching EnableResponseCaching Выполняет попытку кэшировать режим ядра для ответов с допустимыми заголовками. Attempt kernel-mode caching for responses with eligible headers. Ответ не может включать заголовки Set-Cookie , Vary или Pragma . The response may not include Set-Cookie , Vary , or Pragma headers. Он должен включать заголовок Cache-Control со значением public , а также значение shared-max-age или max-age заголовок Expires . It must include a Cache-Control header that’s public and either a shared-max-age or max-age value, or an Expires header. true
          MaxAccepts Максимальное число одновременных попыток. The maximum number of concurrent accepts. 5 × Environment.
          ProcessorCount 5 × Environment.
          ProcessorCount
          MaxConnections Максимальное число попыток установить одновременное подключение. The maximum number of concurrent connections to accept. Использует -1 для бесконечных циклов. Use -1 for infinite. Использует null для работы с параметром реестра на уровне компьютера. Use null to use the registry’s machine-wide setting. null
          (уровень компьютер (machine-wide
          значение) setting)
          MaxRequestBodySize См. раздел MaxRequestBodySize. See the MaxRequestBodySize section. 30 000 000 байт. 30000000 bytes
          (

          28.6 MB)

          RequestQueueLimit Максимально допустимое число запросов в очереди. The maximum number of requests that can be queued. 1000 1000
          ThrowWriteExceptions Указывает, следует ли вызывать исключение или завершать работу нормально, когда запись текста ответа завершается ошибкой из-за отключения клиента. Indicate if response body writes that fail due to client disconnects should throw exceptions or complete normally. false
          Нормальное завершение. (complete normally)
          Timeouts Предоставляет конфигурацию TimeoutManager HTTP.sys, которую также можно настроить в реестре. Expose the HTTP.sys TimeoutManager configuration, which may also be configured in the registry. Дополнительные сведения о каждом параметре, включая значения по умолчанию, см. здесь: Follow the API links to learn more about each setting, including default values:

          • TimeoutManager.DrainEntityBody — время, выделенное API сервера HTTP для очистки текста сущности при активном подключении. TimeoutManager.DrainEntityBody: Time allowed for the HTTP Server API to drain the entity body on a Keep-Alive connection.
          • TimeoutManager.EntityBody — время, выделенное на получение текста сущности запроса. TimeoutManager.EntityBody: Time allowed for the request entity body to arrive.
          • TimeoutManager.HeaderWait — время, выделенное для API сервера HTTP для выполнения синтаксического анализа заголовка запроса. TimeoutManager.HeaderWait: Time allowed for the HTTP Server API to parse the request header.
          • TimeoutManager.IdleConnection — время, допустимое для неактивного подключения. TimeoutManager.IdleConnection: Time allowed for an idle connection.
          • TimeoutManager.MinSendBytesPerSecond — минимальная скорость отправки ответа. TimeoutManager.MinSendBytesPerSecond: The minimum send rate for the response.
          • TimeoutManager.RequestQueue — время, выделенное для пребывания запроса в очереди до его получения приложением. TimeoutManager.RequestQueue: Time allowed for the request to remain in the request queue before the app picks it up.
          UrlPrefixes Указывает UrlPrefixCollection для регистрации с использованием HTTP.sys. Specify the UrlPrefixCollection to register with HTTP.sys. Удобнее всего использовать параметр UrlPrefixCollection.Add, который добавляет префикс к коллекции. The most useful is UrlPrefixCollection.Add, which is used to add a prefix to the collection. Могут быть изменены в любое время до удаления прослушивателя. These may be modified at any time prior to disposing the listener.

          MaxRequestBodySize MaxRequestBodySize

          Максимально допустимый размер текста запроса в байтах. The maximum allowed size of any request body in bytes. Если задано значение null , размер максимального запроса не ограничен. When set to null , the maximum request body size is unlimited. Это ограничение не оказывает влияния на обновленные подключения, которые не имеют ограничений. This limit has no effect on upgraded connections, which are always unlimited.

          Чтобы переопределить это ограничение в приложении ASP.NET Core MVC для IActionResult , рекомендуется использовать атрибут RequestSizeLimitAttribute в методе действия: The recommended method to override the limit in an ASP.NET Core MVC app for a single IActionResult is to use the RequestSizeLimitAttribute attribute on an action method:

          При попытке приложения настроить ограничение для запроса после того, как приложение начало считывать запрос, возникает исключение. An exception is thrown if the app attempts to configure the limit on a request after the app has started reading the request. Свойство IsReadOnly указывает на то, что свойство MaxRequestBodySize находится в состоянии только для чтения и настраивать ограничение слишком поздно. An IsReadOnly property can be used to indicate if the MaxRequestBodySize property is in a read-only state, meaning it’s too late to configure the limit.

          Если приложение должно переопределять MaxRequestBodySize по запросу, используйте IHttpMaxRequestBodySizeFeature: If the app should override MaxRequestBodySize per-request, use the IHttpMaxRequestBodySizeFeature:

          При использовании Visual Studio убедитесь, что приложение не настроено для запуска IIS или IIS Express. If using Visual Studio, make sure the app isn’t configured to run IIS or IIS Express.

          В Visual Studio профиль запуска по умолчанию использует IIS Express. In Visual Studio, the default launch profile is for IIS Express. Чтобы запустить проект как консольное приложение, измените выбранный профиль вручную, как показано на следующем снимке экрана. To run the project as a console app, manually change the selected profile, as shown in the following screen shot:

          Настройка Windows Server Configure Windows Server

          Определите, какие порты нужно открыть для приложения, и используйте брандмауэр Windows или командлет PowerShell New-NetFirewallRule, чтобы открыть порты брандмауэра для доступа трафика к HTTP.sys. Determine the ports to open for the app and use Windows Firewall or the New-NetFirewallRule PowerShell cmdlet to open firewall ports to allow traffic to reach HTTP.sys. В следующих командах и конфигурации приложения используется порт 443. In the following commands and app configuration, port 443 is used.

          При развертывании на виртуальных машинах Azure откройте эти порты в группе безопасности сети. When deploying to an Azure VM, open the ports in the Network Security Group. В следующих командах и конфигурации приложения используется порт 443. In the following commands and app configuration, port 443 is used.

          При необходимости получите и установите сертификаты X.509. Obtain and install X.509 certificates, if required.

          В Windows создайте самозаверяющие сертификаты с помощью командлета PowerShell New-SelfSignedCertificate. On Windows, create self-signed certificates using the New-SelfSignedCertificate PowerShell cmdlet. Примеры, которые не поддерживаются, см. в разделе UpdateIISExpressSSLForChrome.ps1. For an unsupported example, see UpdateIISExpressSSLForChrome.ps1.

          Установите самозаверяющие или подписанные центром сертификации сертификаты в хранилище сервера, выбрав Локальный компьютер > Личный. Install either self-signed or CA-signed certificates in the server’s Local Machine > Personal store.

          Если приложение является развертыванием, не зависящим от платформы, установите NET Core или .NET Framework (или обе платформы, если это приложение .NET Core, предназначенное для .NET Framework). If the app is a framework-dependent deployment, install .NET Core, .NET Framework, or both (if the app is a .NET Core app targeting the .NET Framework).

          • .NET Core. Если приложению требуется .NET Core, загрузите установщик среды выполнения .NET Core на странице скачивания .NET Core и запустите его. .NET Core: If the app requires .NET Core, obtain and run the .NET Core Runtime installer from .NET Core Downloads. Не устанавливайте полный пакет SDK на сервере. Don’t install the full SDK on the server.
          • Платформа .NET Framework. Если приложению требуется .NET Framework, см. руководство по установке. .NET Framework: If the app requires .NET Framework, see the .NET Framework installation guide. Установите требуемую платформу .NET Framework. Install the required .NET Framework. Установщик последней версии .NET Framework доступен на странице скачивания .NET. The installer for the latest .NET Framework is available from the .NET Core Downloads page.

          Если приложение развертывается автономно, в его развертывание включена среда выполнения. If the app is a self-contained deployment, the app includes the runtime in its deployment. Устанавливать .NET Framework на сервере не нужно. No framework installation is required on the server.

          Настройте URL-адреса и порты в приложении. Configure URLs and ports in the app.

          По умолчанию платформа ASP.NET Core привязана к http://localhost:5000 . By default, ASP.NET Core binds to http://localhost:5000 . Чтобы настроить префиксы URL-адресов и порты, используйте следующие параметры: To configure URL prefixes and ports, options include:

          • UseUrls
          • Аргументы командной строки urls . urls command-line argument
          • Переменная среды ASPNETCORE_URLS . ASPNETCORE_URLS environment variable
          • UrlPrefixes

          В следующем примере кода показано, как использовать UrlPrefixes с локальным IP-адресом сервера 10.0.0.4 через порт 443. The following code example shows how to use UrlPrefixes with the server’s local IP address 10.0.0.4 on port 443:

          Преимущество UrlPrefixes заключается в том, что при неправильном формате префиксов сразу же создается сообщение об ошибке. An advantage of UrlPrefixes is that an error message is generated immediately for improperly formatted prefixes.

          Этот параметр в UrlPrefixes переопределяет параметры UseUrls / urls / ASPNETCORE_URLS . The settings in UrlPrefixes override UseUrls / urls / ASPNETCORE_URLS settings. Таким образом, преимущество переменных среды UseUrls , urls и ASPNETCORE_URLS заключается в возможности быстрого переключения между Kestrel и HTTP.sys. Therefore, an advantage of UseUrls , urls , and the ASPNETCORE_URLS environment variable is that it’s easier to switch between Kestrel and HTTP.sys.

          Не используйте привязки с подстановочными знаками ( http://*:80/ и http://+:80 ) на верхнем уровне. Top-level wildcard bindings ( http://*:80/ and http://+:80 ) should not be used. Они создают уязвимости и ставят под угрозу безопасность приложения. Top-level wildcard bindings create app security vulnerabilities. Сюда относятся и строгие, и нестрогие подстановочные знаки. This applies to both strong and weak wildcards. Вместо подстановочных знаков используйте имена узлов или IP-адреса в явном виде. Use explicit host names or IP addresses rather than wildcards. Привязки с подстановочными знаками на уровне дочерних доменов (например, *.mysub.com ) не создают таких угроз безопасности, если вы полностью контролируете родительский домен (в отличие от варианта *.com , создающего уязвимость). Subdomain wildcard binding (for example, *.mysub.com ) isn’t a security risk if you control the entire parent domain (as opposed to *.com , which is vulnerable). Дополнительные сведения см. в стандарте RFC 7230, раздел 5.4, Host. For more information, see RFC 7230: Section 5.4: Host.

          Предварительно зарегистрируйте префиксы URL-адресов на сервере. Preregister URL prefixes on the server.

          Встроенным средством для настройки сервера HTTP.sys является netsh.exe. The built-in tool for configuring HTTP.sys is netsh.exe. С помощью netsh.exe можно зарезервировать префиксы URL-адресов и назначить сертификаты X.509. netsh.exe is used to reserve URL prefixes and assign X.509 certificates. Для использования этого средства требуются права администратора. The tool requires administrator privileges.

          Используйте средство netsh.exe для регистрации URL-адреса приложения. Use the netsh.exe tool to register URLs for the app:

          • . Полное имя URL-адреса. : The fully qualified Uniform Resource Locator (URL). Не используйте привязки с подстановочными знаками. Don’t use a wildcard binding. Используйте допустимое имя узла или локальный IP-адрес. Use a valid hostname or local IP address. URL-адрес должен включать косую черту в конце.The URL must include a trailing slash.
          • . Определяет имя пользователя или группы пользователей. : Specifies the user or user-group name.

          В следующем примере сервер имеет локальный IP-адрес 10.0.0.4 . In the following example, the local IP address of the server is 10.0.0.4 :

          При регистрации URL-адреса средство возвращает ответ URL reservation successfully added . When a URL is registered, the tool responds with URL reservation successfully added .

          Чтобы удалить зарегистрированный URL-адрес, используйте команду delete urlacl . To delete a registered URL, use the delete urlacl command:

          Зарегистрируйте сертификаты X.509 на сервере. Register X.509 certificates on the server.

          Используйте средство netsh.exe для регистрации сертификатов приложения. Use the netsh.exe tool to register certificates for the app:

            . Задает локальный IP-адрес для привязки. : Specifies the local IP address for the binding. Не используйте привязки с подстановочными знаками. Don’t use a wildcard binding. Используйте допустимый IP-адрес. Use a valid IP address.

          . Указывает порт для привязки.

          : Specifies the port for the binding.

        • . Отпечаток сертификата X.509. : The X.509 certificate thumbprint.
        • . Глобальный уникальный идентификатор приложения, задаваемый разработчиком в информационных целях. : A developer-generated GUID to represent the app for informational purposes.

        В справочных целях храните GUID в приложении в виде тега пакета. For reference purposes, store the GUID in the app as a package tag:

        • В Visual Studio сделайте следующее: In Visual Studio:
          • Откройте свойства проекта приложения, щелкнув приложение правой кнопкой мыши в обозревателе решений и выбрав Properties (Свойства). Open the app’s project properties by right-clicking on the app in Solution Explorer and selecting Properties.
          • Перейдите на вкладку Package (Пакет). Select the Package tab.
          • Введите GUID, который вы указали в поле Tags (Теги). Enter the GUID that you created in the Tags field.
        • Если Visual Studio не используется: When not using Visual Studio:

            Откройте файл проекта приложения. Open the app’s project file.

            в новую или существующую группу

            с GUID, который вы создали. Add a

            property to a new or existing

            with the GUID that you created:

            В следующем примере: In the following example:

            • Локальный IP-адрес сервера — 10.0.0.4 . The local IP address of the server is 10.0.0.4 .
            • Сетевой генератор случайных GUID задает значение appid . An online random GUID generator provides the appid value.

            При регистрации сертификата средство возвращает ответ SSL Certificate successfully added . When a certificate is registered, the tool responds with SSL Certificate successfully added .

            Чтобы удалить регистрацию сертификата, используйте команду delete sslcert . To delete a certificate registration, use the delete sslcert command:

            Дополнительные сведения см. в справочной документации по netsh.exe: Reference documentation for netsh.exe:

            Запустите приложение. Run the app.

            Если выполнена привязка к localhost через HTTP (не HTTPS) с номером порта больше 1024, для запуска приложения права администратора не требуются. Administrator privileges aren’t required to run the app when binding to localhost using HTTP (not HTTPS) with a port number greater than 1024. При других конфигурациях (например, при использовании локального IP-адреса или привязки к порту 443) для запуска приложения требуются права администратора. For other configurations (for example, using a local IP address or binding to port 443), run the app with administrator privileges.

            Приложение отвечает по общедоступному IP-адресу сервера. The app responds at the server’s public IP address. В этом примере подключение к серверу происходит через Интернет по общедоступному IP-адресу 104.214.79.47 сервера. In this example, the server is reached from the Internet at its public IP address of 104.214.79.47 .

            В этом примере используется сертификат разработки. A development certificate is used in this example. После обхода предупреждения о ненадежном сертификате браузера происходит безопасная загрузка страницы. The page loads securely after bypassing the browser’s untrusted certificate warning.

            Сценарии использования прокси-сервера и подсистемы балансировки нагрузки Proxy server and load balancer scenarios

            Для приложений, размещенных с помощью файла HTTP.sys, которые взаимодействуют с запросами из Интернета или корпоративной сети, может потребоваться дополнительная настройка при размещении за прокси-серверами и подсистемами балансировки нагрузки. For apps hosted by HTTP.sys that interact with requests from the Internet or a corporate network, additional configuration might be required when hosting behind proxy servers and load balancers. Дополнительные сведения см. в разделе Настройка ASP.NET Core для работы с прокси-серверами и подсистемами балансировки нагрузки. For more information, see Configure ASP.NET Core to work with proxy servers and load balancers.

            Дополнительные ресурсы Additional resources

            HTTP.sys — это веб-сервер для ASP.NET Core, который запускается только в Windows. HTTP.sys is a web server for ASP.NET Core that only runs on Windows. HTTP.sys является альтернативой серверу Kestrel, предлагая некоторые функции, отсутствующие в Kestrel. HTTP.sys is an alternative to Kestrel server and offers some features that Kestrel doesn’t provide.

            HTTP.sys не подходит для использования с IIS или IIS Express из-за несовместимости с модулем ASP.NET Core. HTTP.sys isn’t compatible with the ASP.NET Core Module and can’t be used with IIS or IIS Express.

            HTTP.sys поддерживает следующие функции: HTTP.sys supports the following features:

            • Аутентификация Windows Windows Authentication
            • Совместное использование портов Port sharing
            • Использование HTTPS с SNI HTTPS with SNI
            • Использование HTTP/2 через TLS (Windows 10 и более поздние версии) HTTP/2 over TLS (Windows 10 or later)
            • Прямая передача файлов Direct file transmission
            • Кэширование откликов Response caching
            • Использование WebSockets (Windows 8 и более поздние версии) WebSockets (Windows 8 or later)

            Поддерживаемые версии Windows: Supported Windows versions:

            • Windows 7 и более поздние версии Windows 7 or later
            • Windows Server 2008 R2 и более поздние версии Windows Server 2008 R2 or later

            Условия для применения HTTP.sys When to use HTTP.sys

            HTTP.sys удобно использовать с развертываниями в таких случаях: HTTP.sys is useful for deployments where:

            когда нужно подключить сервер к Интернету напрямую без использования служб IIS; There’s a need to expose the server directly to the Internet without using IIS.

            когда для внутренних развертываний нужна функция, отсутствующая в Kestrel, например аутентификация Windows. An internal deployment requires a feature not available in Kestrel, such as Windows Authentication.

            HTTP.sys — это проверенная технология, которая защищает от многих типов атак, а также обеспечивает надежность, безопасность и масштабируемость полнофункционального веб-сервера. HTTP.sys is mature technology that protects against many types of attacks and provides the robustness, security, and scalability of a full-featured web server. Сами службы IIS выполняются в качестве HTTP-прослушивателя поверх HTTP.sys. IIS itself runs as an HTTP listener on top of HTTP.sys.

            Поддержка HTTP/2 HTTP/2 support

            Протокол HTTP/2 включен для приложений ASP.NET Core, если выполнены следующие базовые требования: HTTP/2 is enabled for ASP.NET Core apps if the following base requirements are met:

            • установлена ОС Windows Server 2016 либо Windows 10 или более поздних версий; Windows Server 2016/Windows 10 or later
            • установлено подключение с поддержкой согласования протокола уровня приложений (ALPN); Application-Layer Protocol Negotiation (ALPN) connection
            • Подключение TLS 1.2 или более поздней версии. TLS 1.2 or later connection

            Если установлено подключение HTTP/2, HttpRequest.Protocol возвращает HTTP/1.1 . If an HTTP/2 connection is established, HttpRequest.Protocol reports HTTP/1.1 .

            Протокол HTTP/2 включен по умолчанию. HTTP/2 is enabled by default. Если не удается установить подключение HTTP/2, применяется резервный вариант HTTP/1.1. If an HTTP/2 connection isn’t established, the connection falls back to HTTP/1.1. В будущих версиях Windows будут доступны флаги конфигурации HTTP/2, в том числе возможность отключения HTTP/2 с использованием HTTP.sys. In a future release of Windows, HTTP/2 configuration flags will be available, including the ability to disable HTTP/2 with HTTP.sys.

            Проверка подлинности в режиме ядра с помощью Kerberos Kernel mode authentication with Kerberos

            HTTP.sys делегирует задачи в проверку подлинности в режиме ядра с помощью протокола проверки подлинности Kerberos. HTTP.sys delegates to kernel mode authentication with the Kerberos authentication protocol. Проверка подлинности в режиме пользователя не поддерживается с Kerberos и HTTP.sys. User mode authentication isn’t supported with Kerberos and HTTP.sys. Необходимо использовать учетную запись компьютера для расшифровки маркера/билета Kerberos, полученного из Active Directory и переадресованного клиентом на сервер для проверки подлинности пользователя. The machine account must be used to decrypt the Kerberos token/ticket that’s obtained from Active Directory and forwarded by the client to the server to authenticate the user. Зарегистрируйте имя субъекта-службы (SPN) для узла, а не пользователя приложения. Register the Service Principal Name (SPN) for the host, not the user of the app.

            Способы применения HTTP.sys How to use HTTP.sys

            Настройка приложения ASP.NET Core для использования HTTP.sys Configure the ASP.NET Core app to use HTTP.sys

            Ссылка на пакет в файле проекта не требуется при использовании метапакета Microsoft.AspNetCore.App (nuget.org). A package reference in the project file isn’t required when using the Microsoft.AspNetCore.App metapackage (nuget.org). Если метапакет Microsoft.AspNetCore.App не используется, добавьте ссылку на пакет в файл Microsoft.AspNetCore.Server.HttpSys. When not using the Microsoft.AspNetCore.App metapackage, add a package reference to Microsoft.AspNetCore.Server.HttpSys.

            Вызовите метод расширения UseHttpSys при создании узла, указав все необходимые параметры HttpSysOptions. Call the UseHttpSys extension method when building the host, specifying any required HttpSysOptions. В следующем примере для параметров задаются значения по умолчанию: The following example sets options to their default values:

            Дополнительная настройка HTTP.sys выполняется с помощью параметров реестра. Additional HTTP.sys configuration is handled through registry settings.

            Параметры HTTP.sys HTTP.sys options

            Свойство. Property Описание Description Значение по умолчанию Default
            AllowSynchronousIO AllowSynchronousIO Указывает, разрешен ли синхронные операции ввода-вывода для HttpContext.Request.Body и HttpContext.Response.Body . Control whether synchronous input/output is allowed for the HttpContext.Request.Body and HttpContext.Response.Body . true
            Authentication.AllowAnonymous Authentication.AllowAnonymous Разрешает анонимные запросы. Allow anonymous requests. true
            Authentication.Schemes Authentication.Schemes Указывает разрешенные схемы аутентификации. Specify the allowed authentication schemes. Может быть изменен в любое время до удаления прослушивателя. May be modified at any time prior to disposing the listener. Предоставляет значения, полученные при перечислении AuthenticationSchemes: Basic , Kerberos , Negotiate , None и NTLM . Values are provided by the AuthenticationSchemes enum: Basic , Kerberos , Negotiate , None , and NTLM . None
            EnableResponseCaching EnableResponseCaching Выполняет попытку кэшировать режим ядра для ответов с допустимыми заголовками. Attempt kernel-mode caching for responses with eligible headers. Ответ не может включать заголовки Set-Cookie , Vary или Pragma . The response may not include Set-Cookie , Vary , or Pragma headers. Он должен включать заголовок Cache-Control со значением public , а также значение shared-max-age или max-age заголовок Expires . It must include a Cache-Control header that’s public and either a shared-max-age or max-age value, or an Expires header. true
            MaxAccepts Максимальное число одновременных попыток. The maximum number of concurrent accepts. 5 × Environment.
            ProcessorCount 5 × Environment.
            ProcessorCount
            MaxConnections Максимальное число попыток установить одновременное подключение. The maximum number of concurrent connections to accept. Использует -1 для бесконечных циклов. Use -1 for infinite. Использует null для работы с параметром реестра на уровне компьютера. Use null to use the registry’s machine-wide setting. null
            (уровень компьютер (machine-wide
            значение) setting)
            MaxRequestBodySize См. раздел MaxRequestBodySize. See the MaxRequestBodySize section. 30 000 000 байт. 30000000 bytes
            (

            28.6 MB)

            RequestQueueLimit Максимально допустимое число запросов в очереди. The maximum number of requests that can be queued. 1000 1000
            ThrowWriteExceptions Указывает, следует ли вызывать исключение или завершать работу нормально, когда запись текста ответа завершается ошибкой из-за отключения клиента. Indicate if response body writes that fail due to client disconnects should throw exceptions or complete normally. false
            Нормальное завершение. (complete normally)
            Timeouts Предоставляет конфигурацию TimeoutManager HTTP.sys, которую также можно настроить в реестре. Expose the HTTP.sys TimeoutManager configuration, which may also be configured in the registry. Дополнительные сведения о каждом параметре, включая значения по умолчанию, см. здесь: Follow the API links to learn more about each setting, including default values:

            • TimeoutManager.DrainEntityBody — время, выделенное API сервера HTTP для очистки текста сущности при активном подключении. TimeoutManager.DrainEntityBody: Time allowed for the HTTP Server API to drain the entity body on a Keep-Alive connection.
            • TimeoutManager.EntityBody — время, выделенное на получение текста сущности запроса. TimeoutManager.EntityBody: Time allowed for the request entity body to arrive.
            • TimeoutManager.HeaderWait — время, выделенное для API сервера HTTP для выполнения синтаксического анализа заголовка запроса. TimeoutManager.HeaderWait: Time allowed for the HTTP Server API to parse the request header.
            • TimeoutManager.IdleConnection — время, допустимое для неактивного подключения. TimeoutManager.IdleConnection: Time allowed for an idle connection.
            • TimeoutManager.MinSendBytesPerSecond — минимальная скорость отправки ответа. TimeoutManager.MinSendBytesPerSecond: The minimum send rate for the response.
            • TimeoutManager.RequestQueue — время, выделенное для пребывания запроса в очереди до его получения приложением. TimeoutManager.RequestQueue: Time allowed for the request to remain in the request queue before the app picks it up.
            UrlPrefixes Указывает UrlPrefixCollection для регистрации с использованием HTTP.sys. Specify the UrlPrefixCollection to register with HTTP.sys. Удобнее всего использовать параметр UrlPrefixCollection.Add, который добавляет префикс к коллекции. The most useful is UrlPrefixCollection.Add, which is used to add a prefix to the collection. Могут быть изменены в любое время до удаления прослушивателя. These may be modified at any time prior to disposing the listener.

            MaxRequestBodySize MaxRequestBodySize

            Максимально допустимый размер текста запроса в байтах. The maximum allowed size of any request body in bytes. Если задано значение null , размер максимального запроса не ограничен. When set to null , the maximum request body size is unlimited. Это ограничение не оказывает влияния на обновленные подключения, которые не имеют ограничений. This limit has no effect on upgraded connections, which are always unlimited.

            Чтобы переопределить это ограничение в приложении ASP.NET Core MVC для IActionResult , рекомендуется использовать атрибут RequestSizeLimitAttribute в методе действия: The recommended method to override the limit in an ASP.NET Core MVC app for a single IActionResult is to use the RequestSizeLimitAttribute attribute on an action method:

            При попытке приложения настроить ограничение для запроса после того, как приложение начало считывать запрос, возникает исключение. An exception is thrown if the app attempts to configure the limit on a request after the app has started reading the request. Свойство IsReadOnly указывает на то, что свойство MaxRequestBodySize находится в состоянии только для чтения и настраивать ограничение слишком поздно. An IsReadOnly property can be used to indicate if the MaxRequestBodySize property is in a read-only state, meaning it’s too late to configure the limit.

            Если приложение должно переопределять MaxRequestBodySize по запросу, используйте IHttpMaxRequestBodySizeFeature: If the app should override MaxRequestBodySize per-request, use the IHttpMaxRequestBodySizeFeature:

            При использовании Visual Studio убедитесь, что приложение не настроено для запуска IIS или IIS Express. If using Visual Studio, make sure the app isn’t configured to run IIS or IIS Express.

            В Visual Studio профиль запуска по умолчанию использует IIS Express. In Visual Studio, the default launch profile is for IIS Express. Чтобы запустить проект как консольное приложение, измените выбранный профиль вручную, как показано на следующем снимке экрана. To run the project as a console app, manually change the selected profile, as shown in the following screen shot:

            Настройка Windows Server Configure Windows Server

            Определите, какие порты нужно открыть для приложения, и используйте брандмауэр Windows или командлет PowerShell New-NetFirewallRule, чтобы открыть порты брандмауэра для доступа трафика к HTTP.sys. Determine the ports to open for the app and use Windows Firewall or the New-NetFirewallRule PowerShell cmdlet to open firewall ports to allow traffic to reach HTTP.sys. В следующих командах и конфигурации приложения используется порт 443. In the following commands and app configuration, port 443 is used.

            При развертывании на виртуальных машинах Azure откройте эти порты в группе безопасности сети. When deploying to an Azure VM, open the ports in the Network Security Group. В следующих командах и конфигурации приложения используется порт 443. In the following commands and app configuration, port 443 is used.

            При необходимости получите и установите сертификаты X.509. Obtain and install X.509 certificates, if required.

            В Windows создайте самозаверяющие сертификаты с помощью командлета PowerShell New-SelfSignedCertificate. On Windows, create self-signed certificates using the New-SelfSignedCertificate PowerShell cmdlet. Примеры, которые не поддерживаются, см. в разделе UpdateIISExpressSSLForChrome.ps1. For an unsupported example, see UpdateIISExpressSSLForChrome.ps1.

            Установите самозаверяющие или подписанные центром сертификации сертификаты в хранилище сервера, выбрав Локальный компьютер > Личный. Install either self-signed or CA-signed certificates in the server’s Local Machine > Personal store.

            Если приложение является развертыванием, не зависящим от платформы, установите NET Core или .NET Framework (или обе платформы, если это приложение .NET Core, предназначенное для .NET Framework). If the app is a framework-dependent deployment, install .NET Core, .NET Framework, or both (if the app is a .NET Core app targeting the .NET Framework).

            • .NET Core. Если приложению требуется .NET Core, загрузите установщик среды выполнения .NET Core на странице скачивания .NET Core и запустите его. .NET Core: If the app requires .NET Core, obtain and run the .NET Core Runtime installer from .NET Core Downloads. Не устанавливайте полный пакет SDK на сервере. Don’t install the full SDK on the server.
            • Платформа .NET Framework. Если приложению требуется .NET Framework, см. руководство по установке. .NET Framework: If the app requires .NET Framework, see the .NET Framework installation guide. Установите требуемую платформу .NET Framework. Install the required .NET Framework. Установщик последней версии .NET Framework доступен на странице скачивания .NET. The installer for the latest .NET Framework is available from the .NET Core Downloads page.

            Если приложение развертывается автономно, в его развертывание включена среда выполнения. If the app is a self-contained deployment, the app includes the runtime in its deployment. Устанавливать .NET Framework на сервере не нужно. No framework installation is required on the server.

            Настройте URL-адреса и порты в приложении. Configure URLs and ports in the app.

            По умолчанию платформа ASP.NET Core привязана к http://localhost:5000 . By default, ASP.NET Core binds to http://localhost:5000 . Чтобы настроить префиксы URL-адресов и порты, используйте следующие параметры: To configure URL prefixes and ports, options include:

            • UseUrls
            • Аргументы командной строки urls . urls command-line argument
            • Переменная среды ASPNETCORE_URLS . ASPNETCORE_URLS environment variable
            • UrlPrefixes

            В следующем примере кода показано, как использовать UrlPrefixes с локальным IP-адресом сервера 10.0.0.4 через порт 443. The following code example shows how to use UrlPrefixes with the server’s local IP address 10.0.0.4 on port 443:

            Преимущество UrlPrefixes заключается в том, что при неправильном формате префиксов сразу же создается сообщение об ошибке. An advantage of UrlPrefixes is that an error message is generated immediately for improperly formatted prefixes.

            Этот параметр в UrlPrefixes переопределяет параметры UseUrls / urls / ASPNETCORE_URLS . The settings in UrlPrefixes override UseUrls / urls / ASPNETCORE_URLS settings. Таким образом, преимущество переменных среды UseUrls , urls и ASPNETCORE_URLS заключается в возможности быстрого переключения между Kestrel и HTTP.sys. Therefore, an advantage of UseUrls , urls , and the ASPNETCORE_URLS environment variable is that it’s easier to switch between Kestrel and HTTP.sys.

            Не используйте привязки с подстановочными знаками ( http://*:80/ и http://+:80 ) на верхнем уровне. Top-level wildcard bindings ( http://*:80/ and http://+:80 ) should not be used. Они создают уязвимости и ставят под угрозу безопасность приложения. Top-level wildcard bindings create app security vulnerabilities. Сюда относятся и строгие, и нестрогие подстановочные знаки. This applies to both strong and weak wildcards. Вместо подстановочных знаков используйте имена узлов или IP-адреса в явном виде. Use explicit host names or IP addresses rather than wildcards. Привязки с подстановочными знаками на уровне дочерних доменов (например, *.mysub.com ) не создают таких угроз безопасности, если вы полностью контролируете родительский домен (в отличие от варианта *.com , создающего уязвимость). Subdomain wildcard binding (for example, *.mysub.com ) isn’t a security risk if you control the entire parent domain (as opposed to *.com , which is vulnerable). Дополнительные сведения см. в стандарте RFC 7230, раздел 5.4, Host. For more information, see RFC 7230: Section 5.4: Host.

            Предварительно зарегистрируйте префиксы URL-адресов на сервере. Preregister URL prefixes on the server.

            Встроенным средством для настройки сервера HTTP.sys является netsh.exe. The built-in tool for configuring HTTP.sys is netsh.exe. С помощью netsh.exe можно зарезервировать префиксы URL-адресов и назначить сертификаты X.509. netsh.exe is used to reserve URL prefixes and assign X.509 certificates. Для использования этого средства требуются права администратора. The tool requires administrator privileges.

            Используйте средство netsh.exe для регистрации URL-адреса приложения. Use the netsh.exe tool to register URLs for the app:

            • . Полное имя URL-адреса. : The fully qualified Uniform Resource Locator (URL). Не используйте привязки с подстановочными знаками. Don’t use a wildcard binding. Используйте допустимое имя узла или локальный IP-адрес. Use a valid hostname or local IP address. URL-адрес должен включать косую черту в конце.The URL must include a trailing slash.
            • . Определяет имя пользователя или группы пользователей. : Specifies the user or user-group name.

            В следующем примере сервер имеет локальный IP-адрес 10.0.0.4 . In the following example, the local IP address of the server is 10.0.0.4 :

            При регистрации URL-адреса средство возвращает ответ URL reservation successfully added . When a URL is registered, the tool responds with URL reservation successfully added .

            Чтобы удалить зарегистрированный URL-адрес, используйте команду delete urlacl . To delete a registered URL, use the delete urlacl command:

            Зарегистрируйте сертификаты X.509 на сервере. Register X.509 certificates on the server.

            Используйте средство netsh.exe для регистрации сертификатов приложения. Use the netsh.exe tool to register certificates for the app:

              . Задает локальный IP-адрес для привязки. : Specifies the local IP address for the binding. Не используйте привязки с подстановочными знаками. Don’t use a wildcard binding. Используйте допустимый IP-адрес. Use a valid IP address.

            . Указывает порт для привязки.

            : Specifies the port for the binding.

          • . Отпечаток сертификата X.509. : The X.509 certificate thumbprint.
          • . Глобальный уникальный идентификатор приложения, задаваемый разработчиком в информационных целях. : A developer-generated GUID to represent the app for informational purposes.

          В справочных целях храните GUID в приложении в виде тега пакета. For reference purposes, store the GUID in the app as a package tag:

          • В Visual Studio сделайте следующее: In Visual Studio:
            • Откройте свойства проекта приложения, щелкнув приложение правой кнопкой мыши в обозревателе решений и выбрав Properties (Свойства). Open the app’s project properties by right-clicking on the app in Solution Explorer and selecting Properties.
            • Перейдите на вкладку Package (Пакет). Select the Package tab.
            • Введите GUID, который вы указали в поле Tags (Теги). Enter the GUID that you created in the Tags field.
          • Если Visual Studio не используется: When not using Visual Studio:

              Откройте файл проекта приложения. Open the app’s project file.

              в новую или существующую группу

              с GUID, который вы создали. Add a

              property to a new or existing

              with the GUID that you created:

              В следующем примере: In the following example:

              • Локальный IP-адрес сервера — 10.0.0.4 . The local IP address of the server is 10.0.0.4 .
              • Сетевой генератор случайных GUID задает значение appid . An online random GUID generator provides the appid value.

              При регистрации сертификата средство возвращает ответ SSL Certificate successfully added . When a certificate is registered, the tool responds with SSL Certificate successfully added .

              Чтобы удалить регистрацию сертификата, используйте команду delete sslcert . To delete a certificate registration, use the delete sslcert command:

              Дополнительные сведения см. в справочной документации по netsh.exe: Reference documentation for netsh.exe:

              Запустите приложение. Run the app.

              Если выполнена привязка к localhost через HTTP (не HTTPS) с номером порта больше 1024, для запуска приложения права администратора не требуются. Administrator privileges aren’t required to run the app when binding to localhost using HTTP (not HTTPS) with a port number greater than 1024. При других конфигурациях (например, при использовании локального IP-адреса или привязки к порту 443) для запуска приложения требуются права администратора. For other configurations (for example, using a local IP address or binding to port 443), run the app with administrator privileges.

              Приложение отвечает по общедоступному IP-адресу сервера. The app responds at the server’s public IP address. В этом примере подключение к серверу происходит через Интернет по общедоступному IP-адресу 104.214.79.47 сервера. In this example, the server is reached from the Internet at its public IP address of 104.214.79.47 .

              В этом примере используется сертификат разработки. A development certificate is used in this example. После обхода предупреждения о ненадежном сертификате браузера происходит безопасная загрузка страницы. The page loads securely after bypassing the browser’s untrusted certificate warning.

              Читайте также:  Linux сервер для виртуальных машин
              Оцените статью