logo NodeSeekbeta

大佬 docker怎么禁止ip+端口访问 只能域名访问?

RT 请教

12
  • docker run -p 127.0.0.1:8081:80 ...
    

    这样就只能本机访问 8081,然后再用 nginx 或 caddy 等反代 8081 即可

  • -p 127.0.0.1:端口
    

    这样最简单

  • 要禁止通过 IP 地址加端口访问 Docker 容器,同时只允许通过域名访问,可以采取以下方法:

    方法 1:限制 Docker 容器的监听地址
    在 Docker 运行容器时,通过指定 --publish 参数的绑定地址,限制容器只绑定到本地回环地址(localhost),这样外部就无法直接通过 IP 和端口访问。

    示例:

    bash
    复制代码
    docker run -d --name my_container -p 127.0.0.1:80:80 my_image
    这样容器内部的 80 端口只会监听在 127.0.0.1 上,不会暴露到外部网络,只能通过反向代理进行访问。

    使用 Nginx 等反向代理工具,通过域名代理访问这个 Docker 容器的本地地址。

    方法 2:在 Nginx 配置中限制 IP 访问
    在 Nginx 配置文件中可以设置只允许特定的 Host(域名)访问。例如,可以在 Nginx 的 server 配置中添加:

    nginx
    复制代码
    server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:80;  # Docker容器的本地地址
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    
    # 拒绝 IP 地址直接访问
    if ($host !~* ^(example\.com)$ ) {
        return 403;
    }
    

    }
    这里的 example.com 是你希望通过的域名,其他 IP 或不符合的 Host 将返回 403 禁止访问。

    方法 3:使用防火墙策略
    如果你的服务器上有防火墙(如 iptables 或 firewalld),可以设置规则,只允许特定的 IP 访问 Docker 的端口,这样可以确保 Docker 端口仅通过反向代理或特定 IP 访问。

  • 别开外网端口 然后域名反代127.0.0.1:某某端口

  • 127.0.0.1:port + 外启动个nginx代理

  • 没法直接禁止,只能前置加一层nginx,容器只监听本地,暴露nginx的端口,在nginx限制只能域名访问。

  • @Oganneson #3 公网ip端口别开就行 域名正常80端口绑定公网ip然后映射内网127.0.0.1对应服务的占用端口

  • 使用nginx转发,把真正的端口映射关闭。nginx只允许域名,网上一搜一大把。

  • Nginx反代时用docker所在ip+端口号,比如172.17.0.1+端口号。
    至于关闭ip+端口访问,看这篇文章:ufw-docker

12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有62049位seeker

🎉欢迎新用户🎉