From 1a72d6ea9b98ed48018f6c908b36f71c80375c71 Mon Sep 17 00:00:00 2001 From: erjemin Date: Thu, 20 Feb 2025 14:00:23 +0300 Subject: [PATCH] =?UTF-8?q?add:=20=D0=BF=D1=80=D0=BE=D0=BA=D1=81=D0=B8=20?= =?UTF-8?q?=D1=85=D0=BE=D1=81=D1=82=D0=B0=20=D0=B8=D0=B7=20docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nginx/nginx_as_direct_proxy.md | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/nginx/nginx_as_direct_proxy.md b/nginx/nginx_as_direct_proxy.md index 3ee70a2..c8e28fe 100644 --- a/nginx/nginx_as_direct_proxy.md +++ b/nginx/nginx_as_direct_proxy.md @@ -5,7 +5,7 @@ перенаправить внешние запросы на другие сервера внутри сети. Заодно можно настроить SSL-терминацию. На примере AudioBookShelf, который должен быть доступен снаружи по адресу `some.you.site` у нас будет вот такой конфиг: -```nginx +```nginx configuration # config for AudioBookShelf [some.you.site] server { @@ -53,3 +53,33 @@ server { return 404; # managed by Certbot } ``` + +## Проксирование на host если nginx находится внутри Docker + +Если [nginx находится внутри Docker или Docker Compose](../docker/docker-nginx-w-certbot.md), то он сможет увидеть +только свои контейнерные IP-адреса и хосты. Если таким nginx нужно проксировать на сам хост, то в конфиге nginx +нужно указать: +```nginx configuration + proxy_pass http://host.docker.internal:xxxx; +``` + +* `host.docker.internal` -- это специальный DNS-имя, которое указывает на хост, на котором запущен Docker. + +Начиная с Docker 20.10.0+ сам контейнер надо запускать с дополнительным параметром `--add-host=host.docker.internal:host-gateway`. +```shell +docker run --add-host=host.docker.internal:host-gateway ... +``` + +Или добавить дополнительную инструкцию `extra_hosts: "host.docker.internal:host-gateway"` в `docker-compose.yml` при +использовании Docker Compose: +```yaml +services: + nginx: + image: nginx:latest + extra_hosts: + - "host.docker.internal:host-gateway" + ports: + - "80:80" +... +... +```