Вот настройка, использующая обратный прокси , так что вы можете использовать относительный URL (вместо того, чтобы связываться с доменными именами на ваших веб-страницах), и которая также имеет преимущество в заботе о CORS проблемы, которые могут возникнуть при вызове Ajax на ваш бэкэнд.
Если вы не знакомы с обратными прокси-серверами, просто знайте, что все запросы http должны сначала попасть на обратный прокси-сервер, а обратный прокси-сервер позаботится о переадресации.эти http-запросы к правильному http-серверу в соответствии с набором правил.
В мире докеров очень удобным обратным прокси-сервером является Traefik .Ниже приведен пример проекта создания докера с обратным прокси-сервером, внешним интерфейсом и внутренним интерфейсом:
index.html:
<!DOCTYPE html>
post a form to backend
ajax call to backend
docker-compose.yml:
version: "3"
services:
reverseproxy: # see https://docs.traefik.io/#the-traefik-quickstart-using-docker
image: traefik
command: --docker
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
backend:
image: kennethreitz/httpbin # see https://httpbin.org
command: ["gunicorn", "-b", "0.0.0.0:8080", "httpbin:app", "-k", "gevent"]
expose:
- 8080
depends_on:
- reverseproxy
labels:
traefik.frontend.rule: PathPrefixStrip:/api
traefik.port: 8080
frontend:
image: nginx
volumes:
- ./index.html:/usr/share/nginx/html/index.html:ro
expose:
- 80
depends_on:
- reverseproxy
- backend
labels:
traefik.frontend.rule: PathPrefixStrip:/
traefik.port: 80
Когда Traefik используется с Docker, вы настраиваете правила переадресации обратного прокси, добавляя метки в свойКонтейнеры для докеров.