从 LAN 连接到反向代理后面的服务时不断超时

从 LAN 连接到反向代理后面的服务时不断超时

在我的第一台家用服务器坏掉几年后,我决定再买一台。这次为了学习和获得更大的灵活性,我使用 docker 容器。问题是,我已经使用 nginx 和 let's ecnrypt 伴侣设置了一个反向代理,以提供 SSL 加密并避免在路由器上转发更多端口。

这几乎完美无缺,我可以从我的手机上使用移动数据或从完全不同的网络访问我的服务,没有任何问题。问题在于,当我尝试在同一个局域网内访问时,我可以访问 1/10 次,而其余 9/10 次都会超时。

我尝试连接的方式没有区别;两种情况都是通过网络浏览器使用<subdomain>.<domain>URL

这是我当前的容器:在此处输入图片描述

至于我当前的docker-compose文件,它是这样的:

version: '3'
services:
  reverse-proxy:
    image: jwilder/nginx-proxy
    ports:
      - '80:80'
      - '443:443'
    container_name: reverse-proxy
    networks:
      service_network: null
    volumes:
      - '/var/run/docker.sock:/tmp/docker.sock:ro'
      - '.\nginx\certs:/etc/nginx/certs'
      - '.\nginx\vhosts:/etc/nginx/vhost.d'
      - '.\nginx\html:/usr/share/nginx/html'
  ACME-SSL:
    image: jrcs/letsencrypt-nginx-proxy-companion
    depends_on:
      - reverse-proxy
    environment:
      NGINX_PROXY_CONTAINER: reverse-proxy
    networks:
      service_network: null
    volumes:
      - '/var/run/docker.sock:/var/run/docker.sock:ro'
      - '.\nginx\certs:/etc/nginx/certs'
      - '.\nginx\vhosts:/etc/nginx/vhost.d'
      - '.\nginx\html:/usr/share/nginx/html'
  nginx:
    image: nginx
    depends_on:
      - reverse-proxy
    ports:
      - '8080:80'
    expose:
      - 8080
    environment:
      - NGINX_HOST=<DOMAIN>
      - NGINX_PORT=80
      - HTTP_PORT=8080
      - VIRTUAL_HOST=<DOMAIN>
      - LETSENCRYPT_HOST=<DOMAIN>
      - LETSENCRYPT_EMAIL=<EMAIL>
    networks:
      service_network: null
    volumes:
      - '.\<DIRECTORY>:/usr/share/nginx/html'
  koel:
    image: hyzual/koel
    depends_on:
      - reverse-proxy
      - database
    ports:
      - '8000:80'
    expose:
      - 8000
    environment:
      - HTTP_PORT=8000
      - VIRTUAL_HOST=<SUBDOMAIN>.<DOMAIN>
      - LETSENCRYPT_HOST=<SUBDOMAIN>.<DOMAIN>
      - LETSENCRYPT_EMAIL=<EMAIL>
      - DB_CONNECTION=mysql
      - DB_HOST=database
      - DB_USERNAME=koel
      - DB_PASSWORD=<PASS>
      - DB_DATABASE=koel
      - FORCE_HTTPS=true
      - LASTFM_API_KEY=<API_SECRET>
      - LASTFM_API_SECRET=<API_KEY>
    networks:
      service_network: null
      db_network: null
    volumes:
      - '/e/musica:/music'
      - '.\koel\covers:/var/www/html/public/img/covers'
      - '.\koel\search_index:/var/www/html/storage/search-indexes'
  database:
    image: 'mysql/mysql-server:5.7'
    volumes:
      - '.\mysql:/var/lib/mysql'
    environment:
      - MYSQL_ROOT_PASSWORD=<PASS>
      - MYSQL_DATABASE=koel
      - MYSQL_USER=koel
      - MYSQL_PASSWORD=<PASS>
    networks:
      db_network: null
networks:
  service_network:
    driver: bridge
  db_network:
    driver: bridge
 

*我将一些值更改为描述,< >因为它们包含私人信息。

答案1

如果您的域名映射到路由器的 WAN IP,则路由器可能会拒绝将网络内部的流量发送回网络。

如果是这种情况,您可以通过将您的域名和反向代理的 IP 写入 /etc/hosts 然后测试连接来排除它。

永久修复需要您运行拆分 DNS 或在路由器的 DNS 覆盖中维护此主机名到 IP 映射(如果有这样的选项)。

相关内容