在我的第一台家用服务器坏掉几年后,我决定再买一台。这次为了学习和获得更大的灵活性,我使用 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 映射(如果有这样的选项)。