Nginx Rverse Proxy для Tomcat (просто да ...? НЕТ) - PullRequest
2 голосов
/ 21 марта 2019

Я создал файл docker-compose для раскрутки как изображений nginx, так и tomcat. Я использую объемные файлы, такие как /etc/nginx/nginx.conf и /etc/nginx/conf.d/app.conf То же самое для Tomcat, но с файлами конфигурации xml и веб-приложениями.

Оба раскручиваются и бегут нормально ... самостоятельно. Я могу перейти к Nginx и получить страницу приветствия и то же самое для Tomcat на их соответствующих портах, 81/8080.

Однако я не могу прокси-запрос к бэкэнд-коту. Я признаю, я Apache и был в течение многих лет, но мне нужно экспериментировать.

Мой nginx.conf не изменился, по-прежнему используется по умолчанию. У меня есть app.conf для приложения Tomcat (ниже). Я пытаюсь и CMD mv default.conf в Tomcat Dockerfile, но он все еще остается рядом с моим app.conf, так что может быть причиной проблемы? мой конфиг app.conf находится здесь: (извиняюсь, не могу получить код для правильного вывода)

"server {
 listen *:81;

set  $allowOriginSite *;
proxy_pass_request_headers on;
proxy_pass_header Set-Cookie;

access_log  /var/log/nginx/access.log  combined;
error_log   /var/log/nginx/error.log error;

# Upload size unlimited
client_max_body_size 0;

location /evf {
    proxy_pass http://tomcat:8080;

    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
  proxy_redirect off;
  proxy_buffering 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_pass_header Set-Cookie;
}
}

tomcat: 8080 - это имя службы в моем файле docker-compose. Любая помощь будет оценена!

Спасибо, Craig

docker-compose.yml для справки; версия: '3'

services:
  nginx:
    build: ./nginx
    image: nginx:evf
    command: nginx -g "daemon off;"
    networks:
      - evf
    container_name: evf-nginx
    volumes:
      - ./volumes/config/nginx-evf.conf:/etc/nginx/conf.d/nginx-evf.conf
      - ./volumes/config/default.conf.disabled:/etc/nginx/conf.d/default.conf.disabled
    ports:
      - "81:80"
  tomcat:
    image: tomcat
    working_dir: /usr/local/tomcat
    volumes:
      - ./volumes/config/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml
      - ./volumes/webapps/EVF.war:/usr/local/tomcat/webapps/EVF.war
    networks:
      - evf
    container_name: evf-tomcat
    ports:
      - "8080:8080" #expose 8080 externally to test connectivity.

networks:
  evf:

Спасибо

1 Ответ

0 голосов
/ 23 марта 2019

В вашем nginx conf у вас есть listen *:81, но вы открываете порт 80 с "81:80".

Таким образом, eiter выставляет порт 81 с помощью "81:81" или изменяет конфигурацию nginx на listen *:80.

Если второй вариант не работает, попробуйте заменить исходную конфигурацию nginx, изменив файл тома в docker-compose.yml:

volumes:
  - ./nginx/nginx-evf.conf:/etc/nginx/conf.d/default.conf
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...