如何阻止来自http请求的端口服务器
How to block port server from http request
我让 Nginx 有一个反向代理来将客户端请求连接到 docker 运行 容器。
问题 是您可以通过键入 serverhost.fr:port_number
来访问容器。我希望客户端只能通过特定主机名访问 运行 容器。
这是我的 docker-compose.yml 文件:
version: '3'
services:
api:
image: username/backendimgage:latest
ports:
- "8081:8000"
restart: always
front:
depends_on:
- api
image: username/frontendimage:latest
ports:
- "8080:36073"
restart: always
我试过用 ufw 阻止,它破坏了一切。
我尝试使用像
这样的 if 语句在 Nginx 上发送 401 代码
if ( $host = serverhost.fr:port_number ){ return 401; }
或
if ( $host ~* portnumber ){ return 401; }
但是没用。我没有丰富的操作背景,所以我有点迷路了。
如果您是 运行 Docker 之外的 nginx 代理,则必须从您的容器连接到已发布的 ports:
。
默认情况下,当您发布时 ports:
它们会发布到主机系统的所有界面上。但是,您可以指定备用绑定地址。如果您将后端服务设置为仅在 127.0.0.1 本地主机接口上发布,则无法从主机外访问它。
version: '3'
services:
api:
image: username/backendimgage:latest
ports:
- "127.0.0.1:8081:8000"
# ^^^^^^^^^
(如果你试图通过使用它的主机端口从一个容器连接到另一个容器——类似于 MacOS/Windows 平台上的 http://host.docker.internal:8081
——这会干扰它,但你应该能够在那里使用 Docker- 本地容器间通信。)
我让 Nginx 有一个反向代理来将客户端请求连接到 docker 运行 容器。
问题 是您可以通过键入 serverhost.fr:port_number
来访问容器。我希望客户端只能通过特定主机名访问 运行 容器。
这是我的 docker-compose.yml 文件:
version: '3'
services:
api:
image: username/backendimgage:latest
ports:
- "8081:8000"
restart: always
front:
depends_on:
- api
image: username/frontendimage:latest
ports:
- "8080:36073"
restart: always
我试过用 ufw 阻止,它破坏了一切。 我尝试使用像
这样的 if 语句在 Nginx 上发送 401 代码if ( $host = serverhost.fr:port_number ){ return 401; }
或
if ( $host ~* portnumber ){ return 401; }
但是没用。我没有丰富的操作背景,所以我有点迷路了。
如果您是 运行 Docker 之外的 nginx 代理,则必须从您的容器连接到已发布的 ports:
。
默认情况下,当您发布时 ports:
它们会发布到主机系统的所有界面上。但是,您可以指定备用绑定地址。如果您将后端服务设置为仅在 127.0.0.1 本地主机接口上发布,则无法从主机外访问它。
version: '3'
services:
api:
image: username/backendimgage:latest
ports:
- "127.0.0.1:8081:8000"
# ^^^^^^^^^
(如果你试图通过使用它的主机端口从一个容器连接到另一个容器——类似于 MacOS/Windows 平台上的 http://host.docker.internal:8081
——这会干扰它,但你应该能够在那里使用 Docker- 本地容器间通信。)