У меня есть обратный прокси-сервер Nginx внутри док-контейнера, который прослушивает порт 3000 и получает доступ к 3002: docker run -p "3002:3000" ...
.
Идея состоит в том, что этот обратный прокси-сервер будет прокси /my-app
к экземпляруработает в моем ноутбуке через порт 8080;и /my-app/api
для экземпляра облака, в https://my-domain
.
Вот конфигурация:
upstream my-laptop {
server host.docker.internal:8080; # this is a magic hostname for the laptop's IP address.
keepalive 64;
}
upstream cloud {
server my-domain.com:443;
keepalive 64;
}
server {
listen 3000;
include ssl/ssl-certs.conf;
include ssl/ssl-params.conf;
location /my-app {
proxy_pass http://my-laptop;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /my-app/api {
proxy_pass https://cloud;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
...
}
Проблемы:
- , когда я нажимаю
https://localhost:3002/my-app
Я получаю ответ 301 на /my-app/
(косая черта).Я не знаю, почему это так.Экземпляр локального приложения отображается в браузере, так что, думаю, я могу позволить ему на мгновение скользить? - когда я нажимаю
https://localhost:3002/my-app/api/students
, я получаю ответ 301 на https://cloud/my-app/api/students
.Конечно, это вызывает проблемы с CORS, и конечная точка не возвращает данные.
Теперь я настроил обратные прокси-серверы пару раз, поэтому я совершенно шокирован тем, что не вижу, чтонеправильно, это не мой первый раз.
Я попытался настроить с помощью upstreams, proxy_set_headers, по сравнению с другим обратным прокси, который у меня есть для другого приложения;У меня нет идей.
Что я делаю не так?