Nginx-прокси не перенаправляет контейнер, открывающий порт 3001, и переписывает URL-адрес на статический IP - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть веб-приложение, работающее на Ruby on Rails с SOLR в docker-compose.Он предоставляет порт 3001, и я хочу получить URL-адрес субдомена, которым обладает мой университет (и у меня есть доступ к панели конфигурации, где я могу указать только «цель», каков, по-моему, IP-адрес моего локального сервера, на котором находится Интернетприложение запущено).

Сначала я попытался сделать это перенаправление без nginx, но URL data.chembiosys.de был просто перенаправлен на http://static.ip:3001 Приложение запущено и доступно.

Итак, я хотел попробовать использовать nginx в качестве обратного прокси, но эффект в основном тот же: - Мне нужно указать номер порта и IP-адрес моего сервера в панели конфигурации доменного имениинтерес - когда я набираю «data.chembiosys.de» в браузере, он показывает IP и номер порта

Что я делаю, так это то, что я сначала создаю сеть nginx-proxy:

sudo docker network create nginx-proxy

Затем я запускаю nginx-proxy с помощью docker-compose.yml:

version: "3"
services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - /home/myhome/Projects/nginx-proxy/conf/my_conf.conf:/etc/nginx/conf.d/my_proxy.conf:ro

  whoami:
    image: jwilder/whoami
    environment:
      - VIRTUAL_HOST=whoami.local

networks:
  default:
    external:
      name: nginx-proxy

Во втором томе я копирую в контейнер nginx-proxy следующий файл конфигурации:

server {
    listen 80; 
    server_name http://mystaticip:3001;
    client_max_body_size 2G;
    return 301 http://data.chembiosys.de$request_uri;
    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header Host data.chembiosys.de;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_pass         http://mystaticip:3001;
    }
}

И, наконец, я запускаю приложение rails docker-compose.yml

version: '3'
services:


  db: 
    image: mysql:5.7
    container_name: seek-mysql_cbs
    restart: always
    env_file:
      - docker/db.env
    volumes:
      - seek-mysql-db_cbs:/var/lib/mysql

  seek: # The SEEK application
    #build: .
    image: fairdom/seek:1.7
    container_name: seek_cbs
    command: docker/entrypoint.sh
    restart: always
    environment:
      RAILS_ENV: production
      SOLR_PORT: 8983
      NO_ENTRYPOINT_WORKERS: 1
    env_file:
      - docker/db.env
    volumes:
      - seek-filestore_cbs:/seek/filestore
      - seek-cache_cbs:/seek/tmp/cache
    ports:
      - "3001:3000"
    depends_on:
      - db
      - solr
    links:
      - db
      - solr

  seek_workers: # The SEEK delayed job workers
      #build: .
      image: fairdom/seek:1.7
      container_name: seek-workers_cbs
      command: docker/start_workers.sh
      restart: always
      environment:
        RAILS_ENV: production
        SOLR_PORT: 8983
      env_file:
        - docker/db.env
      volumes:
        - seek-filestore_cbs:/seek/filestore
        - seek-cache_cbs:/seek/tmp/cache
      depends_on:
        - db
        - solr
      links:
        - db
        - solr

  solr:
    image: fairdom/seek-solr
    container_name: seek-solr_cbs
    volumes:
      - seek-solr-data_cbs:/opt/solr/server/solr/seek/data
    restart: always



volumes:
  seek-filestore_cbs:
    driver: local-persist
    driver_opts:
      mountpoint: /home/myhome/Projects/ChemBioSys/docker_volumes/seek-filestore_cbs
  seek-mysql-db_cbs:
    driver: local-persist
    driver_opts:
      mountpoint: /home/myhome/Projects/ChemBioSys/docker_volumes/seek-mysql-db_cbs
  seek-solr-data_cbs:
    driver: local-persist
    driver_opts:
      mountpoint: /home/myhome/Projects/ChemBioSys/docker_volumes/seek-solr-data_cbs
  seek-cache_cbs:
    driver: local-persist
    driver_opts:
      mountpoint: /home/myhome/Projects/ChemBioSys/docker_volumes/seek-cache_cbs

networks:
  default:
    external:
      name: nginx-proxy

У меня такое ощущение, что nginx-proxy просто не может подключить URL к приложению.Что я делаю не так и как подключить приложение к URL с помощью nginx?А также, как избежать перезаписи URL-адреса на порт IP:

PS Статический IP-адрес, полученный от SysAdmins, является буквенно-цифровым, и я вижу следующее предупреждение при запуске docker-compose nginx-proxy:

nginx-proxy    | [warn] 30#30: server name "http://pc08.ian.uni-jena.de:3001" has suspicious symbols in /etc/nginx/conf.d/my_proxy.conf:3
...