Обратный прокси NGINX - Docker Swarm - proxy_pass не работает - PullRequest
0 голосов
/ 01 декабря 2018

Сегодня я возвращаюсь к вашему опыту, я новичок с некоторыми неприятностями, которые убивают мою голову.

Я работаю с сервером TileServerGL, предоставляющим карту OpenStreet.org в док-контейнере в рое.Этот сервер работает нормально, если порт 80 открыт и перенаправлен, скажем, 8080, я могу получить его содержимое в [IP Docker Swarm]: 8080.

Теперь мне нужно добавить обратный прокси передэтот контейнер, чтобы добавить некоторую безопасность (но пока нет, сначала мне нужно заставить работать обратный прокси), поэтому я добавляю контейнер Nginx в файл docker-compose.yml, и я пытаюсь правильно настроить более простую версиюОбратный прокси nginx, без особого успеха.

Я пытался:

  • Локальный запуск с помощью docker-compose up –build
  • Запуск внутри роя на моей локальной машине с помощью: docker stack deploy -cdocker-compose.yml lab
  • Работа на машинах Vbox с: стек Docker deploy -c docker-compose.yml lab

Разрешение домена работает нормально:

  • мой IP-адрес пользователя: 192.168.1.105
  • в etc / hosts У меня есть: 192.168.1.105 app.io

Когда я открываю http://app.io вв браузере я получаю страницу приветствия Nginx по умолчанию.Все идет нормально.Но когда я нажимаю http://maps.app.io, я все равно получаю ту же страницу приветствия по умолчанию.

Журнал сервера Nginx:

10.255.0.2 - - [01/Dec/2018:00:55:59 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" "-"

Я не обращался бы к вам за помощью перед прочтениемкаждый пост, статью, учебник, которые я нашел в интернете.На мой взгляд, файл «nginx.conf» правильный, но реальность показывает мне, что я, несомненно, ошибаюсь и не замечаю своей ошибки.Буду очень признателен за вашу помощь.

Я работаю:

  • linux Mint 19 Tara
  • Версия Docker: версия Docker 18.09.0, сборка 4d60db4
  • Версия Docker-машины: версия Docker-машины 0.16.0, сборка 702c267f

Файл docker-compose.yml:

version: "3.5"

networks:
  nginx-net:
    driver: overlay

services:
  maps:
    image: xxxx/xxxx:mapstiles
    volumes:
      - ./server_mapstiles/app/data:/data
    networks:
      - nginx-net
    deploy:
      restart_policy:
        condition: on-failure
      replicas: 1

  nginx:
    image: nginx:1.15.7
    container_name: nginx
    ports:
      - "80:80"
    networks:
      - nginx-net
    volumes:
     - ./server_nginx/nginx.conf:/etc/nginx/proxy.conf:ro
    deploy:
      restart_policy:
        condition: on-failure
      replicas: 1
    depends_on:
     - maps

Файл nginx conf:

server {
        listen          80;
        server_name     maps.app.io;

        location / {
                proxy_pass  http://:maps:80;
                proxy_redirect     off;
                proxy_set_header   Host $host;
                proxy_set_header   X-Real-IP $remote_addr;
                proxy_set_header   X-Forwarded-For 
                $proxy_add_x_forwarded_for;
                proxy_set_header   X-Forwarded-Host $server_name;
                resolver        127.0.0.11;
        }
}

1 Ответ

0 голосов
/ 01 декабря 2018

У вас есть неприятный неверный синтаксис для вашей директивы proxy_pass.

proxy_pass http://:maps:80; не является допустимым пунктом назначения прокси, http://:maps:80 не удастся из-за этого первого двоеточия после //.

Попробуйте proxy_pass http://maps:80;, но имейте в виду ловушку конфигурации NGINX , использующую имя хоста для определения местоположения / назначения прохода прокси-сервера / и т.д.

...