应用程序部署到服务器后可通过端口 3000 访问

App accessible via port 3000 after deploy to server

我在 docker 容器中有一个 django 应用程序 运行(请参阅下面的 docker 撰写和 docker 文件)。我已经从 docker-compose 中删除了端口暴露,但是当我将代码部署到 ubuntu 服务器上时,我仍然可以通过端口 3000 访问该应用程序。我还使用 nginx 进行代理(请参阅下面的 nginx 文件)。

services:
  rabbitmq:
    restart: always
    image: rabbitmq:3.7
    ...

  db:
    restart: always
    image: mongo:4
    ...

  cam_dash:
    restart: always
    build: .
    command: python3 manage.py runserver 0.0.0.0:3000
    ...

  celery:
    restart: always
    build: .
    command: celery -A dashboard worker -l INFO -c 200
    ...

  celery_beat:
    restart: always
    build: .
    command: celery beat -A dashboard -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
    ...
FROM python:3.7

COPY requirements.txt /
RUN pip3 install -r /requirements.txt

ADD ./ /dashboard
WORKDIR /dashboard

COPY ./docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]

EXPOSE 3000
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;
        return 301 https://$host$request_uri;

        root         /var/www/html;
        index        index.html;
}

server {
        listen 443;
        server_name camonitor.uct.ac.za;

        ssl on;
        ssl_certificate /etc/ssl/certs/wildcard.crt;
        ssl_certificate_key /etc/ssl/private/wildcard.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        location / {
                root   /var/www/html;
                index  index.html;
        }

        location /dash/ {
                proxy_pass http://127.0.0.1:3000/dash/;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
        }
        ...

我希望如果我尝试访问 https://example.com:3000/dash/, it should not be accessible. https://example.com/dash/ 就可以正常工作。

感谢您的帮助。

您应该使用系统的防火墙阻止对端口 3000 的访问。 我在同一台机器上托管多个 Web 服务器并使用 Nginx 代理时遇到了同样的问题,我在 docker-compose.yml 中使用此端口配置解决了问题,仅将端口绑定到本地主机,也许您可​​以应用相同的配置到 python 服务器。

"127.0.0.1:3000:3000"

version: '3'
services:
  myService:
    image: "myService/myService:1"
    container_name: "myService"
    ports:
      - "127.0.0.1:3000:3000"