微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

docker 通过没有域的 https 提供内容仅使用公共 IP 地址 1.为您的域添加一个指向后端的 DNS 条目2.在 Docker Swarm 配置中添加两个服务器

如何解决docker 通过没有域的 https 提供内容仅使用公共 IP 地址 1.为您的域添加一个指向后端的 DNS 条目2.在 Docker Swarm 配置中添加两个服务器

我有两个不同的服务器。在服务器 1 上,我有一个域和一个 IP 地址,而在服务器 2 上,我只有一个公共 IP 地址。 我在服务器 1 上托管网页,在服务器 2 上托管网络服务。 当我想从服务器 1 连接到服务器 2 时,出现以下错误

此请求已被阻止;内容必须通过 HTTPS 提供

我没有完成通过 HTTPS 提供来自网络服务的内容。首先,我使用 letencrypt 和 Nginx 反向代理进行了尝试,但出现无法使用 SSL 验证 IP 地址的错误。然后我在没有letsencrypt的情况下尝试了它,但后来我只能通过http获取内容。当我只有一个没有域的公共 IP 地址时,如何使用 https 和 docker 提供我的内容? 这是我的 docker-compose 文件

version: "3.3"

services:
  proxy:
    image: jwilder/Nginx-proxy:alpine
    container_name: proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      ### required for Let's Encrypt certificates
      - Nginx_certs:/etc/Nginx/certs:ro
      - Nginx_vhosts:/etc/Nginx/vhost.d
      - Nginx_html:/usr/share/Nginx/html
    restart: always
  # letsencrypt:
  #   image: jrcs/letsencrypt-Nginx-proxy-companion
  #   environment:
  #   ### Todo: Change to your e-mail address
  #     - DEFAULT_EMAIL=XXX@gmail.com
  #     - Nginx_PROXY_CONTAINER=proxy
  #   volumes_from:
  #     - proxy
  #   volumes:
  #     - /var/run/docker.sock:/var/run/docker.sock:ro
  #     - Nginx_certs:/etc/Nginx/certs:rw
  #   restart: always
  whoami:
    image: jwilder/whoami
    environment:
      - VIRTUAL_HOST=IP_ADDRESS
      - VIRTUAL_PROTO=https
volumes:
  #### Nginx reverse proxy container volumes
  Nginx_certs:
  Nginx_vhosts:
  Nginx_html:

解决方法

我可以想到两种可能的解决方案:

1.为您的域添加一个指向后端的 DNS 条目

如果您的域类似于 example.com,您可以使用子域 api.example.com 作为您的后端。

在此处阅读有关如何使用子域的更多信息:How to add subdomain entry

2.在 Docker Swarm 配置中添加两个服务器

如果您将两台服务器都添加到您的群中,您就可以通过内部网络运行通信,该网络可以加密。

您可以在官方 Docker 文档中阅读更多相关信息:https://docs.docker.com/network/overlay/

不过,我无法从您的问题中判断这是否适合您。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。