Nextcloud容器无法访问

Nextcloud容器无法访问

我正在尝试使用 https、mysql 和 docker-compose 在 debian 10 VM 中创建 nextcloud 设置,但是当我访问时https://cloud.example.org我的浏览器说无法访问。如果我访问链接https://example.org它给出了这个页面:

示例域

该域用于文档中的说明性示例。您可以在文献中使用此域名,无需事先协调或征求许可。

这是我的 docker-compose.yml 文件

version: '3'

services:
    nginx-proxy:
        image: jwilder/nginx-proxy:alpine
        labels:
            - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true"
        container_name: nextcloud-proxy
        networks:
            - nextcloud_network
        ports:
            - 80:80
            - 443:443
        volumes:
            - /home/dev/nextcloud-data/nginx/vhost.d:/etc/nginx/vhost.d:rw
            - /home/dev/nextcloud-data/nginx/html:/usr/share/nginx/html:rw
            - /home/dev/nextcloud-data/nginx/certs:/etc/nginx/certs:ro
            - /etc/localtime:/etc/localtime:ro
            - /var/run/docker.sock:/tmp/docker.sock:ro

        restart: unless-stopped

    letsencrypt:
        image: jrcs/letsencrypt-nginx-proxy-companion
        container_name: nextcloud-letsencrypt
        depends_on:
            - nginx-proxy
        networks:
            - nextcloud_network
        volumes:
            - /home/dev/nextcloud-data/nginx/vhost.d:/etc/nginx/vhost.d:rw
            - /home/dev/nextcloud-data/nginx/html:/usr/share/nginx/html:rw
            - /home/dev/nextcloud-data/nginx/certs:/etc/nginx/certs:rw
            - /etc/localtime:/etc/localtime:ro
            - /var/run/docker.sock:/var/run/docker.sock:ro
        restart: unless-stopped

    mysql:
        image: mariadb
        container_name: nextcloud-mysql
        networks:
            - nextcloud_network
        volumes:
            - /home/dev/nextcloud-data/database/mysql:/var/lib/mysql
            - /etc/localtime:/etc/localtime:ro
        environment:
            - MYSQL_ROOT_PASSWORD=mysql_root_testpassword
            - MYSQL_PASSOWRD=nexcloud_testp@ssw0rd
            - MYSQL_DATABASE=nextcloud
            - MYSQL_USER=nextcloud
        restart: unless-stopped

    nextcloud-app:
        image: nextcloud:latest
        container_name: nextcloud-app
        networks:
            - nextcloud_network
        depends_on:
            - letsencrypt
            - nginx-proxy
            - mysql
        volumes:
            - /home/dev/nextcloud-data/data/html:/var/www/html
            - /home/dev/nextcloud-data/data/config:/var/www/html/config
            - /home/dev/nextcloud-data/data/data:/var/www/html/data
            - /home/dev/nextcloud-data/data/themes:/var/www/html/themes
            - /etc/localtime:/etc/localtime:ro
        environment:
            - VIRTUAL_HOST=cloud.example.org
            - LETSENCRYPT_HOST=cloud.example.org
            - [email protected]
        restart: unless-stopped

networks:
    nextcloud_network:

如果我运行这个命令:

curl -I https://example.org

输出是:

HTTP/2 200
content-encoding: gzip
accept-ranges: bytes
age: 427989
cache-control: max-age=604800
content-type: text/html; charset=UTF-8
date: Tue, 21 Sep 2021 18:33:43 GMT
etag: "3147526947"
expires: Tue, 28 Sep 2021 18:33:43 GMT
last-modified: Thu, 17 Oct 2019 07:18:26 GMT
server: ECS (dcb/7EEF)
x-cache: HIT
content-length: 648

用于命令

curl -I https://cloud.example.org

输出是:

curl: (6) Could not resolve host: cloud.example.org

答案1

URL 只为我们人类而存在,机器使用 IP 地址。当您将浏览器指向该地址时,您的系统实际上会进行 DNS 查询以查找相应的 IP 地址并连接到该地址。https://example.com是 IANA 出于文档目的提供的网页,有一个运行 Web 服务的实际系统,该系统具有实际的 IP 地址,并且为了使其可访问,有相应的 DNS 条目。

无法访问 cloud.example.com 的原因很简单,因为没有人提供可通过该 DNS 名称访问的任何服务。因此,没有相应的 IP 地址,也没有 DNS 条目。由于 IANA 保留 example.com 用于文档目的,因此其子域(如 cloud.example.com)经常在培训材料中用作示例。

如果你想使用这个DNS名称进行测试,你可以在自己的内网中架设一个服务器来提供一些服务。您还可以设置内部 DNS 服务器并创建适当的条目,或者您可以简单地将名称和相应的(私有)IP 地址添加到您尝试访问它的系统的主机文件中。

相关内容