Так что в настоящее время я использую API-интерфейс экспресс-сервера, я хочу разрешить доступ к API только в том случае, если пользователь прошел через прокси-сервер nginx.В моей конфигурации прокси-сервера для nginx есть следующая строка для подключения к приложению Express (обратите внимание, что в конфигурации nginx есть больше строк для обслуживания других файлов):
location ~* ^/(api/|test/){
proxy_pass http://docker-express-app:3000;
}
Это позволяет мне перейти к моей пользовательской настройке.например, домен: example.com/api / .... и он получит запрос правильно.Однако я также могу перейти на server.ip.here:3000/api / ... и он все равно будет правильно получать информацию.Я хочу исключить возможность для людей вводить IP-адрес сервера и иметь возможность подключаться к API.
(Примечание: для настройки фактического экспресс-приложения я использовал экспресс-генератор для его настройки итолько что добавил несколько тестовых API-маршрутов, чтобы посмотреть, смогу ли я подключиться к нему)
Также обратите внимание, что я запускаю экспресс-приложение и прокси-сервер nginx, использующий docker.
Компоновка docker выглядит так:
version: '3'
services:
app:
container_name: docker-express-app
restart: always
build: app/
command: npm start
ports:
- 3000:3000
proxy:
container_name: nginx-proxy
restart: always
build: proxy/
ports:
- 80:80
- 443:443
Прокси-файл Dockerfile:
FROM nginx:alpine
WORKDIR /usr/src/proxy
RUN rm /etc/nginx/conf.d/*
COPY proxy.conf /etc/nginx/conf.d/
COPY views/* ./views/
Экспресс-приложение Dockerfile:
FROM node:latest
WORKDIR /usr/src/app
COPY package.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm", "start" ]
Все, что я хочу сделать, это убедиться, что запросы к APIмаршрутизируется через прокси.Это возможно?