不幸的是,没有太多关于如何将Nginx或Apache代理注入ASP.NET Core Docker容器的文档。 这是一个很好的手册,但它有单独的图像用于ASP.NET核心应用程序和Nginx。
ASP.NET Core API behind the Nginx Reverse Proxy with Docker.
我想在Azure上托管我的Docker镜像,所以我需要在Docker容器中安装Nginx。
基于这篇文章Nginx Reverse Proxy to ASP.NET Core – Same Docker Container我创建了这个配置:
nginx.conf
worker_processes 4;
events { worker_connections 1024; }
http {
sendfile on;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
large_client_header_buffers 4 16k;
upstream app_servers {
server 127.0.0.1:5000;
}
server {
listen 80;
location / {
proxy_pass http://app_servers;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
}
}
Dockerfile
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0 AS build
RUN apt-get update
RUN apt-get install -y apt-utils
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y nginx
WORKDIR /src
COPY MyApp.csproj MyApp.csproj
RUN dotnet restore
COPY . .
WORKDIR /src
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 .
RUN rm -f /app/startup.sh
COPY startup.sh /app
RUN chmod 755 /app/startup.sh
RUN rm -f /etc/nginx/nginx.conf
COPY nginx.conf /etc/nginx
ENV ASPNETCORE_URLS http://+:5000
EXPOSE 5000 80
CMD ["sh", "/app/startup.sh"]
Startup.sh
#!/bin/bash
service nginx start
dotnet /app/MyApp.dll
仍然收到“服务不可用” 可能是因为我有Azure AAD身份验证。 有人可以推荐一些东西或提供其他工作配置吗?
答案 0 :(得分:0)
曾俊是正确的评论。无法或不建议在同一容器中同时托管nginx和应用程序。
我最终从Nginx图像创建了Ingress。
已使用Helm安装它。
由于我的Kubernetes群集位于Azure中,因此我使用了下一本手册:
Create an HTTPS ingress controller on Azure Kubernetes Service
答案 1 :(得分:0)
我有一些使用docker-compose的Azure Linux WebApp,以Nginx作为反向代理来提供Asp.Net Core 3.1应用程序(它们也运行着WebJob)。这些WebApp在GitHub,Docker注册表和Azure Pipelines都有公共存储库。
https://pdf.ricardogaefke.com/
https://webjobs.ricardogaefke.com/
您可以在How it works
页上查看公共存储库。