LINUX.ORG.RU

nginx и docker

 , ,


0

4

Добрый день. Есть несколько docker контейнеров с nginx. нужно продвязать к каждому контейнеру свой домен на одном ip. Я установил локально nginx на машину где установлены контейнеры и пытаюсь пробросить виртуальные домен на nginx контейнеров. proxy_pass http:@@@:8080; proxy_set_header X-Real-IP $remote_addr; Так это не работает

Ответ на: комментарий от Jopich1

server {

error_log /var/log/lada/@@@@@.ru/error.log; access_log /var/log/lada/@@@@.ru/access.log;

listen 80; set $host_path «/usr/sites/@@@@@.ru»;

server_name @@@@@@@.ru; root $host_path;

charset utf-8; client_max_body_size 100M;

location / { root $host_path/app; proxy_pass http://@@@@@@@@.ru:8080;

try_files $uri $uri/ /index.html; index index.html; }

location ~ ^/api-internal/.+$ { root $host_path/api/web; try_files $uri $uri/ /index.php?$query_string; index index.php; } location ~ \.php$ {

set $parsed_request_uri $request_uri; if ($request_uri ~ ^/api-internal/(.*)$ ) { set $parsed_request_uri $1?$query_string; }

root $host_path/api/web; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9001; #fastcgi_pass unix:/run/php/php7.0-fpm.sock; try_files $uri =404; fastcgi_read_timeout 600; fastcgi_buffer_size 128k; fastcgi_buffers 4 128k; fastcgi_param REQUEST_URI $parsed_request_uri; }

location ~* /\. { deny all; }

}

letema88 ()
Ответ на: комментарий от Jopich1

если вбиваешь внутренний ip контейнера. выдается ошибка 502 Bad Gateway. А вот если к домену добавляешь порт 8080 все работает

letema88 ()
Ответ на: комментарий от letema88

если через firewall порт закрыт 8080 - то он доступен только по localhost. Соотв или проксируй или открывай firewall ..

Надпись

proxy_pass http://@@@@@@@@.ru:8080;
в данном случае еквивалентна:
proxy_pass http://127.0.0.1:8080;

или route допиши на хост машине так чтобы была доступна внутренняя подсеть docker контейнеров ...

Jopich1 ()
Последнее исправление: Jopich1 (всего исправлений: 2)

нужно продвязать к каждому контейнеру свой домен на одном ip

Лучшее из виденных решений — https://github.com/jwilder/nginx-proxy

Всё делает автоматом. Всё, что нужно, это в поднимаемом контейнере (любом, не только NginX) указать переменную окружения с доменом (или доменами), который нужно привязать к контейнеру. После чего в контейнере с jwilder/nginx-proxy автоматом начнёт проксировать запросы куда нужно. То есть ручной работы вообще никакой нет.

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

ТС стоит сначала разобраться как все это работает без докеров ...

Jopich1 ()
Ответ на: комментарий от letema88

он с динамическими поддоменами работает

Это как? С wildcards? Да:


You can also use wildcards at the beginning and the end of host name, like *.bar.com or foo.bar.*. Or even a regular expression, which can be very useful in conjunction with a wildcard DNS service like xip.io, using ~^foo\.bar\..*\.xip\.io will match foo.bar.127.0.0.1.xip.io, foo.bar.10.0.2.2.xip.io and all other given IPs. More information about this topic can be found in the nginx documentation about server_names.

KRoN73 ★★★★★ ()
Ответ на: комментарий от Jopich1

Неужели сейчас для того чтобы отредактировать конфиг файл nginx нужно запускать отдельный докер с отдельным линуксом ?

Нет, его нужно запускать, чтобы **не** редактировать конфиг.

KRoN73 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.