我在asp.net core 2.2
操作系统中有一个windows
的项目。
我部署项目并使用kesterl
并通过以下命令运行:
dotnet myapp.dll
在http://localhost:5000
中运行。
我需要在mydomain.com
中运行该网站。
我在主机中为mydomain.com
ip设置了127.0.0.1
。
如何设置此配置?
答案 0 :(得分:1)
当直接通过Kestrel运行ASP.NET Core应用程序而没有其他反向代理(如IIS或nginx)时,您将需要正确配置托管URL。文档的endpoint configuration chapter中详细描述了一些选项:
默认情况下,ASP.NET Core绑定到:
- http://localhost:5000
- https://localhost:5001(如果有本地开发证书)
使用以下网址指定网址:
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
更永久(但仍然灵活)的解决方案是将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>"
}
}
}
}
}
有关更多详细信息,请查看hosting with Kestrel上的文档。
如果要在公共端口上托管应用程序,应记住,只能有一个进程在端口上进行侦听。因此,如果您已经在端口80和443上监听了其他应用程序,则无法在这些端口上使用Kestrel托管应用程序。这是仅使用Kestrel的托管模型的局限性,因为每个应用程序都是一个单独的进程。相比之下,通过反向代理(例如IIS或nginx)进行托管,则可以在同一端口上托管多个应用程序,因为是在这些端口上侦听的是反向代理进程。