只允许访问通过与码头工人nginx的表达应用
所以我目前正在运行的Express服务器API,我想只允许访问的API,如果用户通过nginx的代理去了。在我的代理配置为nginx的有用于连接到快递程序(注意,我在nginx的配置更加线服务于其他文件)下面一行:
location ~* ^/(api/|test/){
proxy_pass http://docker-express-app:3000;
}
这让我去我的自定义域,例如:example/api / ......,它会得到正确的请求。不过,我也可以去server.ip.here:3000/api / ...,它仍然会正确地得到我的信息。我想消除人们在服务器IP类型,并能够连接到API的能力。
(注:实际应用快递是如何设置我用快递发电机得到它设置和只是增加了一些测试API路线,看看我是否能连接到它)
另外请注意,我正在运行的应用程序明确,并使用泊坞窗nginx的代理。
泊坞窗撰写看起来像这样:
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获取通过代理路由。这可能吗?
回答如下:好吧,我固定我的问题。
我除去线在Dockerfile“EXPOSE 3000”,并在搬运工-撰写我删除定义该端口的线“端口: - 3000:3000”(我也改名为容器名称到应用程序)。然后我添加到以下代理服务:“链接: - 应用:应用程序”,然后在我改变了proxy_pass到url http://app:3000代理,和它的作品,因为我想这一点。