Nginx
從 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
*我已將一些值更改為之間的描述,
< >
因為它們包含私人資訊。
如果您的域映射到路由器的 WAN IP,則可能是路由器拒絕將網路內部的流量發送回它。
如果是這種情況,您可以通過將您的域名和反向代理的 IP 寫入 /etc/hosts 然後測試連接來排除它。
永久修復將要求您執行拆分 DNS 或在路由器的 DNS 覆蓋中維護此主機名到 IP 的映射(如果有這樣的選項)。