質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Redmine

Redmineは、プロジェクトのタスク管理、進捗管理、情報共有が可能な、 オープンソースプロジェクト管理ソフトウェアです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

5565閲覧

DockerでNginxとRedmineの環境構築でログイン後、my/pageに正しくリダイレクトされない

nom-tech

総合スコア10

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Redmine

Redmineは、プロジェクトのタスク管理、進捗管理、情報共有が可能な、 オープンソースプロジェクト管理ソフトウェアです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2018/12/06 01:08

前提・実現したいこと

初めて投稿させていただきます。

現在、docker-compose で nginx + redmine + mysql で環境を構築しています。
他との関係上、nginxのコンテナは ホスト側ポートを81,コンテナ側ポートを80 とする予定でいます。
この設定で動かしてみたところ

ブラウザから http://ホストIP:ホストport/redmine にアクセスすると
redmineの初期画面は正しく表示され、ログイン画面へ移るところまで正しく動作します。

ログイン画面でログイン名とパスワードを入力後、ログインボタンを押下でmy/pageにリダイレクトされるのですが、
ブラウザには http://ホストIP/redmine/my/page のURLがリダイレクトされます。
81のポート番号が付いていないためブラウザ側で my/page が読み込めず正しく表示されません。

リダイレクトURLを http://ホストIP:ホストport/redmine/my/page とするには
どの様に設定すればよいのか、ご教示いただけると大変ありがたいです。何卒お願いいたします。

発生している問題・エラーメッセージ

エラー等は特に発生していません。
リダイレクト先のURLが http://ホストIP:81/redmine/my/page とならないことが原因と思っています。

該当のソースコード

docker-compose.yml の内容は以下のとおりです。

version: '2' services: redmine-mysql: restart: always image: sameersbn/mysql:latest environment: - DB_USER=redmine - DB_PASS=redmine - DB_NAME=redmine_production volumes: - /srv/docker/redmine/mysql:/var/lib/mysql redmine: restart: always image: sameersbn/redmine:latest links: - redmine-mysql:mysql environment: - TZ=Asia/Tokyo - DB_ADAPTER=mysql2 - DB_HOST=redmine-mysql - DB_USER=redmine - DB_PASS=redmine - DB_NAME=redmine_production - REDMINE_HTTPS=false - REDMINE_RELATIVE_URL_ROOT=/redmine volumes: - /srv/docker/redmine/redmine:/home/redmine/data proxy: build: nginx-proxy links: - redmine:redmine ports: - "81:80"

最後のproxyサービスのポート設定のところでnginxのポートを設定しています。(ホスト側 81: コンテナ内部 80)

nginx-proxyのbuild用dockerfieは次のとおりです。

# https://registry.hub.docker.com/_/nginx/ FROM nginx:latest # 設定ファイルをコピー COPY nginx.conf /etc/nginx/nginx.conf

nginx(nginx.conf)の設定は次のとおりです。

user nginx; worker_processes 2; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; server_tokens off; server { listen 80 default_server; listen [::]:80 default_server; server_name 127.0.0.1; charset utf-8; client_max_body_size 1024M; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto http; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; # static-html location / { index index.html; root /usr/share/nginx/html; } # redmine location /redmine { proxy_pass http://redmine; } } }

試したこと

nginxコンテナのホスト側ポートを80 で設定するとリダイレクト先は
http://ホストIP:ホストport/redemine のままですが正しく表示されます。

nginx.confのlocation /redmineのセクションでproxy_redirectやrewriteでURLの書き換えなど試していましたが
状況は変わりませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

nginxの設定でリバースプロキシ経由でリダイレクトする際の設定方法がありました。
http://mogile.web.fc2.com/nginx_wiki/start/topics/examples/likeapache/

実際にはnginx.confのserverコンテキストで
proxy_set_header X-Forwarded-Host $host;
とあるところを
proxy_set_header X-Forwarded-Host $host:81;
とdockerのホスト側ポートをつけてやることで
バックエンドからのレスポンスにあるlocationをポート番号付きにでき
期待する動作ができました。
dockerコンテナ内のnginxはdockerの外側の事情は分からないので
ハードコードで設定するしかないようです。

ありがとうございました。

投稿2018/12/06 08:27

nom-tech

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Docker で稼働させている環境がないので、確認していないのですが...

redmine にログインして、「管理」→「設定」「全般」の「ホスト名とパス」はどのような設定になっているでしょうか?

ここを ホストIP:81 に変更して、rails を再起動したら変わったりしないでしょうか?

投稿2018/12/06 08:04

CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nom-tech

2018/12/06 08:22

回答ありがとうございます。 redmineの設定を確認してみましたが、localhost:3000
nom-tech

2018/12/06 08:24

上記のとおりの設定でした。 別途、いろいろとネットを調べていて、結論としては期待する動作を実現できました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問