A.R*_*R.F 8 kestrel .net-core asp.net-core asp.net-core-2.2
我有一个asp.net core 2.2在windowsos 中的项目。
我部署项目并kesterl使用以下命令运行:
dotnet myapp.dll
Run Code Online (Sandbox Code Playgroud)
那是运行在http://localhost:5000.
我需要在mydomain.com.
我mydomain.com在hosts中设置了127.0.0.1ip。
如何设置这个配置?
当您直接通过 Kestrel 运行 ASP.NET Core 应用程序时,无需使用 IIS 或 nginx 等额外的反向代理,您将需要正确配置托管 URL。文档的端点配置章节详细描述了一些选项:
默认情况下,ASP.NET Core 绑定到:
- http://本地主机:5000
- https://localhost:5001(当存在本地开发证书时)
使用以下方式指定 URL:
ASPNETCORE_URLS环境变量。--urls命令行参数。urls主机配置密钥。UseUrls扩展方法。
一个非常常见的解决方案是更改环境变量。这允许您以非常灵活的方式设置 URL,这对于快速启动应用程序非常有用。当您从命令行启动服务器时,可能如下所示:
# PowerShell
PS> $env:ASPNETCORE_URLS = 'http://example.com'
PS> dotnet myapp.dll
# cmd
> set ASPNETCORE_URLS=http://example.com
> dotnet myapp.dll
# bash
$ ASPNETCORE_URLS=http://example.com dotnet myapp.dll
Run Code Online (Sandbox Code Playgroud)
更永久(但仍然灵活)的解决方案是将 Kestrel 配置指定为appsettings.json文件的一部分。如果您想通过 HTTPS 托管,这还允许您配置 HTTPS 证书。
例如,这可能如下所示:
{
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://example.com"
},
"Https": {
"Url": "https://example.com",
"Certificate": {
"Path": "<path to .pfx file>",
"Password": "<certificate password>"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请查看有关使用 Kestrel 托管的文档。
如果您想在公共端口上托管应用程序,您应该记住,只能有一个进程在侦听端口。因此,如果您有其他应用程序已在侦听端口 80 和 443,您将无法在这些端口上使用 Kestrel 托管您的应用程序。这是仅使用 Kestrel 的托管模型的限制,因为每个应用程序都是一个单独的进程。相比之下,通过反向代理(例如 IIS 或 nginx)托管,允许您在同一端口上托管多个应用程序,因为反向代理进程正在侦听这些端口。
| 归档时间: |
|
| 查看次数: |
10447 次 |
| 最近记录: |