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

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

新規登録して質問してみよう
ただいま回答率
85.48%
mod_rewrite

ApacheウェブサーバーのためのURL書き換えモジュールです。主にプリティーURLに使われていますが、同様に単純置換を超えた、多様なタスクの処理能力や柔軟性があります。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

1回答

6079閲覧

Apacheのmod_proxy設定でWebサイトのURLを書き換えたいです。

neruko

総合スコア7

mod_rewrite

ApacheウェブサーバーのためのURL書き換えモジュールです。主にプリティーURLに使われていますが、同様に単純置換を超えた、多様なタスクの処理能力や柔軟性があります。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2016/09/09 10:42

###Apaceのmod_proxyやmod_rewriteの設定でWebサイトのURLを書き換えたいです。
現在Tomcat上でJavaで作成したA~Dのシステムが動作しています。

アクセスURLはそれぞれ以下のようになっています。

  • http://{ドメインA}:8080/{Aのwarファイル名}
  • http://{ドメインB}:8080/{Bのwarファイル名}
  • http://{ドメインC}:8080/{Cのwarファイル名}
  • http://{ドメインD}:8080/{Dのwarファイル名}

それぞれのアクセスURLを以下の様にしたいと考えております。

  • http://{ドメインA}/
  • http://{ドメインB}/
  • http://{ドメインC}/
  • http://{ドメインD}/

###上記を実現する為にApacheのhttpd.confを修正したところ、アクセスURLが書き換わってしまう上にCSSや画像が表示されなくなりました。

http://{ドメインB}/ → http://{ドメインB}/{Cのwarファイル名}/login

※/loginの部分についてはシステムの問題なので考慮外として下さいませ。

###httpd.confの修正内容は以下の通りです

httpd.conf

1<VirtualHost *:80> 2 ServerName {ドメインC} 3 ServerAdmin www@{ドメインC} 4 DocumentRoot /var/www/{ドメイン名C}/htdocs 5 6 ProxyRequests Off 7 ProxyPreserveHost On 8 RequestHeader unset Accept-Encoding 9 <Proxy *> 10 Order deny,allow 11 Allow from all 12 </Proxy> 13 14 ProxyPass /phpmyadmin ! 15 ProxyPass / http://{サーバのIPアドレス}:8080/{Cのwarファイル名}/ 16 RewriteEngine on 17 RewriteCond %[REQUEST_FILENAME} !^(.*)\.(gif|png|jpg|jpeg)$ [NC] 18 RewriteRule ^(/.*) ajp://{サーバのIPアドレス}}:8009/{Cのwarファイル名}/$1 [P] 19 SetOutputFilter proxy-html 20 ProxyHTMLExtended on 21 ProxyPassReverse /{Cのwarファイル名}/ / 22 ProxyPassReverseCookiePath /{Cのwarファイル名}/ / 23 ProxyHTMLURLMap /{Cのwarファイル名}/ / 24</VirtualHost>

###試したこと

  • 同一ドメインで使用したいphpmyadminの除外設定を入れました
  • 画像が表示されなかった為、mod_rewriteの除外設定を入れました

###補足情報(言語/FW/ツール等のバージョンなど)
CentOS7
Apache2.4
Tomcat8.x

インフラの知識があまりなく、自身で調査しながら実施したのですがなかなか思った通りにいかずこちらで質問させて頂くことにしました。
お手数をお掛けして申し訳ございませんが、よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

<VirtualHost> は 4つのドメインごとに設定する必要があります(設定済みなのかもしれませんが、念のため)。
ajp://{サーバのIPアドレス}:8009 に接続できるようですので、8080 を使わずに ProxyPass で ajp に接続していいと思います。
また、ProxyPassReverse の設定が逆です。

phpmyadmin が共通ならば、4つのドメインで DocumentRoot を同じにするか、下記例のように Alias で phpmyadmin のパスを設定するといいと思います。

(設定例) <VirtualHost *:80> ServerName {ドメインA} DocumentRoot /var/www/{ドメイン名A}/htdocs Alias /phpmyadmin/ {phpmyadminのパス} ProxyRequests Off ProxyPass /phpmyadmin/ ! ProxyPass / ajp://{サーバのIPアドレス}:8009/{Aのwarファイル名}/ ProxyPassReverse / ajp://{サーバのIPアドレス}:8009/{Aのwarファイル名}/ </VirtualHost> <VirtualHost *:80> ServerName {ドメインB} DocumentRoot /var/www/{ドメイン名B}/htdocs Alias /phpmyadmin/ {phpmyadminのパス} ProxyRequests Off ProxyPass /phpmyadmin/ ! ProxyPass / ajp://{サーバのIPアドレス}:8009/{Bのwarファイル名}/ ProxyPassReverse / ajp://{サーバのIPアドレス}:8009/{Bのwarファイル名}/ </VirtualHost> <VirtualHost *:80> ServerName {ドメインC} DocumentRoot /var/www/{ドメイン名C}/htdocs Alias /phpmyadmin/ {phpmyadminのパス} ProxyRequests Off ProxyPass /phpmyadmin/ ! ProxyPass / ajp://{サーバのIPアドレス}:8009/{Cのwarファイル名}/ ProxyPassReverse / ajp://{サーバのIPアドレス}:8009/{Cのwarファイル名}/ </VirtualHost> <VirtualHost *:80> ServerName {ドメインD} DocumentRoot /var/www/{ドメイン名D}/htdocs Alias /phpmyadmin/ {phpmyadminのパス} ProxyRequests Off ProxyPass /phpmyadmin/ ! ProxyPass / ajp://{サーバのIPアドレス}:8009/{Dのwarファイル名}/ ProxyPassReverse / ajp://{サーバのIPアドレス}:8009/{Dのwarファイル名}/ </VirtualHost> <Directory "{phpmyadminのパス}"> Require ip {接続を許可するIPアドレス} </Directory>

CSS や画像が表示されない原因はわかりませんが、img src= などが絶対パスになっていたりしませんでしょうか?

投稿2016/09/10 16:43

編集2016/09/11 09:09
TaichiYanagiya

総合スコア12146

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

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

neruko

2016/09/12 05:54

ご回答ありがとうございます。 早速試してみたところ、トップページへのアクセスは問題ありませんでした。 >CSS や画像が表示されない原因はわかりませんが、img src= などが絶対パスになっていたりしませんでしょうか? こちらはSpringframeworkで生成していたURLが絶対パスになっておりましたので、修正致します。 ログイン後にHTTPステータスが302となってしまったのですが、今回の質問については解決して頂きましたので「解決済」とさせて頂きます。 302の件は自身で調べた後、難しいようなら別途質問を立てさせて頂きます。 その際はまた宜しくお願い致します。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問