【问题标题】:webapi .net core got nginx connect() failed (111: Connection refused)webapi .net 核心让 nginx connect() 失败(111:连接被拒绝)
【发布时间】:2018-07-21 22:12:33
【问题描述】:

将我的 webapi dotnet 核心项目部署到 Ubuntu 服务器 通过 nginx 配置红隼和代理

我在文件Program.cs中的代码

public class Program {
  public static void Main(string[] args) {
    var config = new ConfigurationBuilder()
      .SetBasePath(Directory.GetCurrentDirectory())
      .AddJsonFile("hosting.json", optional: true)
      .Build();

    var host = new WebHostBuilder()
      .UseKestrel()
      .UseConfiguration(config)
      .UseContentRoot(Directory.GetCurrentDirectory())
      .UseUrls("http://localhost:5050")
      .UseStartup<Startup>()
      .Build(); 
    host.Run();
  }
}

/etc/nginx/sites-available/default 中创建文件并创建符号链接到/etc/nginx/sites-enable/default

server {
  listen 80;
  location / {
    proxy_pass http://localhost:5050;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection keep-alive;
    proxy_set_header Host $http_host;
    proxy_cache_bypass $http_upgrade;
  }
}

我在 /etc/systemd/system/kestrel-project.service 中的文件

[Unit]
Description=WebApi .NET Core running on Ubuntu

[Service]
WorkingDirectory=/var/aspnetcore/project
ExecStart=/usr/bin/dotnet /var/aspnetcore/project/project.dll
Restart=always
RestartSec=10
SyslogIdentifier=dotnet-project
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

为了部署使用这个脚本,它一直有效到今天

dotnet restore
dotnet build
dotnet publish

cp -r /root/src/project/bin/Debug/netcoreapp2.0/publish/* /var/aspnetcore/project/

cp /root/src/project/bin/Debug/netcoreapp2.0/project.dll /var/aspnetcore/project/

service nginx restart
systemctl daemon-reload
systemctl stop kestrel-project.service
systemctl enable kestrel-project.service
systemctl start kestrel-project.service
systemctl status kestrel-project.service

现在,当我在 pc 上的本地主机上启动我的 webapi 时 - webapi 运行良好并响应我的请求,但从服务器我收到 HTTP 错误 500 并且在 /var/log/nginx/error.log 我看到了这个

2018/02/11 19:58:04 [alert] 10584#10584: aborting
2018/02/11 20:01:15 [error] 11717#11717: *1 connect() failed (111:Connection refused) while connecting to upstream, client: *.*.*.*, server: , request: "GET /list HTTP/1.1", upstream: "http://127.0.1.1:5050/list", host: "*.*.*.*.*"

请帮助我理解这个问题并解决它

webapi 很久没改了,但是几天前我开始出现这些错误

【问题讨论】:

  • 你解决了这个问题吗?
  • @JasonThuli 我找到了另一种解决方法,我已将项目添加到 docker 容器并进行了一些更改。我可以回答我自己的问题并解释详细信息 - 如果您愿意?

标签: c# ubuntu nginx .net-core kestrel


【解决方案1】:

这不是我问题的答案,但我找到了另一种解决问题的方法

如何让项目再次伟大

使用 Docker 支持创建新的 .net Core 项目 Web-Api

使用 Docker 将项目的代码复制/粘贴到新项目

现在我的代码在Program.cs

public static void Main(string[] args) {
  BuildWebHost(args).Run();
}

public static IWebHost BuildWebHost(string[] args) =>
  WebHost.CreateDefaultBuilder(args)
    .UseKestrel()
    .UseStartup<Startup>()
    .Build();
}

我在/etc/nginx/sites-available/default中的文件

server {
  listen 80;
  server_name api.mydomain.com;

  location / {
    proxy_pass http://localhost:5050;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }
}

删除文件/etc/systemd/system/kestrel-project.service

在项目中配置 Docker

我的 Docker 文件 - 用于在 Docker Hub 上自动构建

FROM microsoft/dotnet:latest
COPY . /app
WORKDIR /app

RUN ["dotnet", "restore"]
RUN ["dotnet", "build"]

EXPOSE 5050/tcp

ENV ASPNETCORE_URLS http://*5050
ENV ASPNETCORE_ENVIRONMENT docker

ENTRYPOINT ["dotnet", "run", "--server.urls", "http://0.0.0.0:5050"]

我的文件 Docker.Compose

FROM microsoft/dotnet:latest
WORKDIR /app
EXPOSE 5050:80

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY *.sln ./
COPY project/project.csproj project/
RUN dotnet restore
COPY . .
WORKDIR /src/project
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "project.dll"]

注册Docker Hub它是免费的

连接到我的 github 帐户并为我的项目创建自动构建

然后在服务器端我连接到 docker hub

制作docker pull dockerprofile/project

然后docker run -d -p 5050:80 dockerprofile/project

4 个月后一切正常

ps 如果您需要更多详细信息,请联系我

【讨论】:

    猜你喜欢
    • 2014-09-13
    • 1970-01-01
    • 2019-04-14
    • 2022-01-18
    • 2017-07-08
    • 1970-01-01
    • 2014-02-26
    • 2012-11-21
    • 2016-02-01
    相关资源
    最近更新 更多