У меня есть веб-приложение, работающее на 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