因此,我非常善于使用nginx和dotnetcore在裸机或虚拟机上设置安全服务器。我的新公司使用Azure,而我主要在家中使用AWS。对于docker和容器化应用程序,我还是有点绿色。我在本地测试了一个可以正常工作的容器,这是docker文件:
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base
WORKDIR /app
EXPOSE 5000
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /src
COPY ["BrandArmorRest.csproj", "./"]
RUN dotnet restore "./BrandArmorRest.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "BrandArmorRest.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "BrandArmorRest.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "BrandArmorRest.dll"]
在使用容器的同时,我需要在线进行测试,因此我以通常使用AWS EC2实例推送到云的方式运行了一个nginx应用程序。我使用证书和密钥配置nginx,将TLS设置为A级,等等。Dotnet核心作为反向代理后面的系统服务运行。
但是现在我不确定下一步如何。基本上,我在每次创建网站时都厌倦了手动进行此设置,因此我觉得容器将是重用配置代码的好方法。我一次将私钥丢失给了我的AWS实例,然后不得不重新配置所有内容,因此这使我有意升级自己的技能。
所以我会在本地做
docker build -t idfk .
docker run --rm -d -p 5000:80/tcp brandarmor:latest
然后导航到localhost:5000,一切都很好。我看到这篇文章是关于在其Install nginx on an existing asp.net core docker container之上添加nginx的。但是后来我不确定安全性方面。像TLS一样。我主要使用nginx来终止加密,但是docker / azure / kubernetes可能已经有一个这样做的系统,因此实际上并不需要nginx。我只想部署尚未投入生产的简单Web api,因此在此阶段,整个扩展/负载平衡问题并不十分重要。我想我的问题是这个。我如何从这个本地开发的容器中转为天蓝色而无需建造刮板机。我需要nginx层,还是azure有其自己的内部方式?如果确实需要nginx层,如何确保RSA加密的安全性?换句话说,在我的git repo中删除私钥和证书听起来像是一个糟糕的主意,但是有什么选择。我没有任何DNS要求,因此只要使用https,它就可以使用一些通用的天蓝色名称。预先感谢您的任何建议。