webapi .net 核心得到 nginx connect() 失败(111:连接被拒绝)
webapi .net core got nginx connect() failed (111: Connection refused)
将我的 webapi dotnet 核心项目部署到 Ubuntu 服务器
通过 nginx
配置 kestrel 和代理
我的代码在文件中 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 工作了很长时间但几天前我开始出现这些错误
这不是我问题的答案,但我找到了另一种解决问题的方法
如何让项目再次伟大
创建新的 .net Core 项目 Web-Api Docker 支持
Copy/Paste 项目代码到新项目 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 集线器
制作docker pull dockerprofile/project
然后是docker run -d -p 5050:80 dockerprofile/project
4个月后一切正常
ps 如果您需要更多详细信息,请找我
将我的 webapi dotnet 核心项目部署到 Ubuntu 服务器 通过 nginx
配置 kestrel 和代理我的代码在文件中 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 工作了很长时间但几天前我开始出现这些错误
这不是我问题的答案,但我找到了另一种解决问题的方法
如何让项目再次伟大
创建新的 .net Core 项目 Web-Api Docker 支持
Copy/Paste 项目代码到新项目 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 集线器
制作docker pull dockerprofile/project
然后是docker run -d -p 5050:80 dockerprofile/project
4个月后一切正常
ps 如果您需要更多详细信息,请找我