Я пытаюсь развернуть интерфейс (angular) и бэкэнд (ядро .net) через docker compose на сервере Linux. Я создал два файла докеров, представленных в соответствующем файле. Вот мой файл docker.compos.yml.
version: '3.4
volumes:
data:
services:
api:
build:
context: .
dockerfile: Backend/Dockerfile
ports:
- "5000:80"
depends_on:
- db
web:
build:
context: .
dockerfile: Frontend/Dockerfile
ports:
- "80:80"
depends_on:
- api
db:
image: postgres:latest
volumes:
- data:/var/lib/postgresql/data
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "docker_Password"
POSTGRES_DB: "database_name"
ports:
- "5432:5432"
Я использую образ nginx для обслуживания сборки интерфейса. Вот файл default.conf с базовыми настройками.
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
}
С приведенной выше конфигурацией я запустил docker-compose up --build, и я могу увидеть свою страницу входа (поскольку порт 80 открыт, поэтому мой URL-адрес - это мой IP-адрес сервера). Но когда я пытаюсь войти в систему, он отправляет запрос ajax в мою службу api, которая работает на порту 5000, и я получил ошибку перекрестного происхождения, поскольку мой интерфейс, работающий на порту 80, пытается получить доступ к службе, которая работает на порту 5000. Я хотел сделать что-то, чтобы все мои запросы, начинающиеся с пути api (здесь в моем случае это {server_ip} / api / login), перенаправляли на службу api. Есть ли в nginx что-нибудь, что может помочь при перенаправлении запроса?
Я также попытался добавить следующие строки в блок местоположения default.conf, но безуспешно.
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' GET, POST, OPTIONS '
;