К сожалению, не так много документации о том, как можно внедрить прокси Nginx или Apache в контейнер ASP.NET Core Docker.Вот хорошее руководство, которое работает, но в нем есть отдельные образы для приложения ASP.NET Core и Nginx.
ASP.NET Core API позади обратного прокси-сервера Nginx с Docker.
Я хочу разместить свой образ Docker в Azure, поэтому мне нужно иметь Nginx в моем контейнере Docker.
На основе этой статьи Обратный прокси-сервер Nginx для ASP.NET Core - тот же Docker-контейнер Я создал эту конфигурацию:
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.Кто-то может порекомендовать что-то или предоставить другую рабочую конфигурацию?