У меня есть asp. net веб-приложение api в контейнере docker, и оно хорошо работает с приведенными ниже командами,
docker build -t hello-aspnetcore3 -f Api.Dockerfile .
docker run -d -p 5000:5000 --name hello-aspnetcore3 hello-aspnetcore3
Просмотрите: http://localhost: 5000 / weatherforecast отлично работает.
Теперь я пытаюсь использовать Nginx
в качестве обратного прокси и работаю в другом контейнере, а вот nginx conf и файлы контейнера,
nginx .conf
worker_processes 1;
events { worker_connections 1024; }
http {
sendfile on;
upstream web-api {
server api:5000;
}
server {
listen 80;
server_name $hostname;
location / {
proxy_pass http://web-api;
proxy_redirect off;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
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-Proto $scheme;
proxy_set_header X-Forwarded-Host $server_name;
}
}
}
Nginx .Dockerfile
FROM nginx:latest
COPY nginx.conf /etc/nginx/nginx.conf
и вот мой docker файл создания,
docker -compose.yml
version: "3.7"
services:
reverseproxy:
build:
context: ./Nginx
dockerfile: Nginx.Dockerfile
ports:
- "80:80"
restart: always
api:
depends_on:
- reverseproxy
build:
context: ./HelloAspNetCore3.Api
dockerfile: Api.Dockerfile
expose:
- "5000"
restart: always
Создание и запуск контейнеров в порядке docker-compose build
и docker-compose up -d
.
Но при попытке просмотреть http://localhost/weatherforecast
он дает HTTP Error 404. The requested resource is not found.
ошибка. Что здесь не так?
Примечание - когда я просматриваю с использованием IP-адреса хоста http://192.168.0.103/weatherforcast
, он работает нормально.
Docker-Compose ps
вывод здесь ....
введите описание изображения здесь