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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

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

WebSocket

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

Q&A

1回答

19413閲覧

【WebSocket】と【Apache】との連携がうまくできません。

Sfidante

総合スコア90

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

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

WebSocket

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

0グッド

0クリップ

投稿2015/08/24 02:56

ローカル環境ではWebSocektは利用できるのですが、
サーバーに上げたら
WebSockeが機能しなくなってしまいました。
WebSockeとApacheの連携がうまくいっていないようです。

利用している環境は
Apache:2.4.6
Tomcat:7.0.42
CentOS:6.5
です。

http://qiita.com/sion_cojp/items/a79ae08853528761cc30

http://normalse.hatenablog.jp/entry/2015/03/13/200755
を参照して設定を行ったのですが、
うまくいきません。

Webアプリのトップページには
http://www.example.jp/example/
で表示できるとします。

/etc/httpd/conf/extra/httpd-proxy.confの設定は

ProxyPass /expample/ ws://www.expample.jp/expample/ ProxyPassReverse /expample/ ws://www.expample.jp/expample/ ProxyPass /expample/ ajp://www.expample.jp:8009/expample/

としています。

httpd.confにおけるproxyに関係するところは以下のとおりです。

LoadModule proxy_module lib64/httpd/modules/mod_proxy.so LoadModule proxy_ftp_module lib64/httpd/modules/mod_proxy_ftp.so LoadModule proxy_http_module lib64/httpd/modules/mod_proxy_http.so LoadModule proxy_wstunnel_module lib64/httpd/modules/mod_proxy_wstunnel.so LoadModule proxy_ajp_module lib64/httpd/modules/mod_proxy_ajp.so

原因もわからない状態です。
何卒ご教授お願い致します。

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

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

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

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

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

TaichiYanagiya

2015/08/24 05:02

「うまくいかない」とは具体的にどのような状態でしょうか? どのような操作をして、期待する結果がこうだけれど、実際にはこうなってしまう、というような状況がわかるといいと思います。
Sfidante

2015/08/24 05:05

チャットをWebSocketをを用いて行っており、 その際に、メッセージを入力して送信すると 入力された文章がそのページ内に表示される予定なのですが、 それが表示されません。
TaichiYanagiya

2015/08/24 05:14

Chat example(examples/websocket/chat.xhtml)ですか? Echo example(examples/websocket/echo.xhtml)で Connect できますでしょうか?
Sfidante

2015/08/24 05:40

どちらを試してもcloseになってしまいます。
guest

回答1

0

Webアプリのトップページは http://www.example.jp/example/ とのことですが、これは Apache httpd (80番ポート)が受けるのですよね?
Apache httpd と Tomcat が同じサーバーに同居しているのであれば、ProxyPass の先は Tomcat が受けるポート(8080番ポート)になると思います。

ProxyPass /examples/websocket/ ws://www.example.com:8080/examples/websocket/ ProxyPassReverse /examples/websocket/ ws://www.example.com:8080/examples/websocket/ または ProxyPass /examples/websocket/ ws://127.0.0.1:8080/examples/websocket/ ProxyPassReverse /examples/websocket/ ws://127.0.0.1:8080/examples/websocket/

投稿2015/08/24 05:53

TaichiYanagiya

総合スコア12173

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

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

Sfidante

2015/08/24 06:17

ご回答ありがとうございます。 >Webアプリのトップページは http://www.example.jp/example/ とのことですが、 >これは Apache httpd (80番ポート)が受けるのですよね? おっしゃられる通り、80番で受けております。 >Apache httpd と Tomcat が同じサーバーに同居しているのであれば、 >ProxyPass の先は Tomcat が受けるポート(8080番ポート)になると思います。 上記に記載していただいたとおりに行いましたが、結果は変わりませんでした。 8080を消しても変わりませんでした。
TaichiYanagiya

2015/08/24 06:31

ajp: だけが有効になっているように思います。設定変更後、httpd は再起動していますよね? Tomcat 7 のデフォルトであれば「example」ではなく「examples」ですが、合っていますよね? 念のため、ご確認ください。 Tomcat 側のアクセスログはどうなっていますでしょうか。 例えば、ws: 側を「ws://127.0.0.1:8080/〜」 ajp: 側を「ajp://www.example.com:8009/〜」 とすると、Tomcat のアクセスログの接続元で ws:, ajp: の区別ができると思います(もっといい方法があるかもしれません)。「/examples/websocket/」にアクセスしたとき、接続元が 127.0.0.1 になっていますでしょうか?
Sfidante

2015/08/24 07:01

ご返信有難うございます。 >設定変更後、httpd は再起動していますよね? 再起動はしております。 >Tomcat 7 のデフォルトであれば「example」ではなく「examples」ですが、 >合っていますよね? 申し訳ありません。 http://www.example.jp/example/ と記載いたしましたが、 本当のドメイン名は違うものとなっております。 紛らわしい名前をつけてしまい申し訳ありません。 >Tomcat 側のアクセスログはどうなっていますでしょうか。 >例えば、ws: 側を「ws://127.0.0.1:8080/〜」 >ajp: 側を「ajp://www.example.com:8009/〜」 >とすると、Tomcat のアクセスログの接続元で ws:, ajp: の区別ができると思います >(もっといい方法があるかもしれません)。 ドメインとIPアドレスという具合に変えてみましたが、 区別できるような表示になっていなかったように見受けられます。 >「/examples/websocket/」にアクセスしたとき、接続元が 127.0.0.1 > になっていますでしょうか? 現状は127.0.01になっておらず、 10.0.0.135や10.0.0157となっております。
TaichiYanagiya

2015/08/24 07:13

うーん、10.0.0.135, 10.0.0.157 はサーバーの IPアドレスですか? そちらの環境がわからないので、ws: と ajp: の接続元による切り分けについては一旦やめにして、設定を ws: だけにしてみてください。 ProxyPass /examples/websocket/ ws://127.0.0.1:8080/examples/websocket/ ProxyPassReverse /examples/websocket/ ws://127.0.0.1:8080/examples/websocket/ (ajp: 箇所を削除)
Sfidante

2015/08/24 07:40

>10.0.0.135, 10.0.0.157 はサーバーの IPアドレスですか? おそらくそうなのでしょうか。 10.0.0.◯◯というのがプライベートIPアドレスとなっておりますので。 >ws: と ajp: の接続元による切り分けについては一旦やめにして、 >設定を ws: だけにしてみてください。 おっしゃられる通りの記載にいたしましたが、 結果はかわらず、closeになってしまいた。
TaichiYanagiya

2015/08/24 07:45

ws: で接続できているのにダメなのですか??? それでは、Tomcat に直接アクセスするとどうなるのでしょうか。 http://サーバー:8080/examples/websocket/
Sfidante

2015/08/24 08:50

>Tomcat に直接アクセスするとどうなるのでしょうか。 現在、tomcatへは:8080を外した状態でアクセスできるようになっており、 http://サーバー/examples/websocket/で echoやchatを選択する画面になります。
TaichiYanagiya

2015/08/24 09:07

Tomcat は 80番ポートで待ち受けているということは、Apache httpdとは別のサーバーなのですね。同居していると勘違いしていました。 で、http://(Tomcat)/examples/websocket/ 以下のサンプルでは connect になるのですか?
Sfidante

2015/08/24 09:12

申し訳ありません。 その辺も理解不足で。 こちらのサンプルでもcloseとなってしまいます。
TaichiYanagiya

2015/08/24 09:17

"ss -tlnp" コマンドの実行結果を教えてください。
Sfidante

2015/08/24 10:21

ポート80のところだけを申し上げますと、 LISTEN 0 128 :::80 :::* users:(("httpd",16033,4),("httpd",16034,4),("httpd",16035,4),("httpd",16036,4)) という結果となっております。
TaichiYanagiya

2015/08/24 10:24

Tomcat に直接接続しても connect にならないのであれば、 Tomcat に問題があるのか、ブラウザに問題があるのだと思います。
Sfidante

2015/08/24 11:00

ありがとうございます。 まずはtomcatの設定の部分を見てみてみます。
TaichiYanagiya

2015/08/25 02:10

ブラウザで(フォワード)プロキシーを利用していませんでしょうか?
Sfidante

2015/08/25 08:09

ご回答ありがとう御座います。 現状、まだWebSocketが接続できていない状態です。 >ブラウザで(フォワード)プロキシーを利用していませんでしょうか? MacOSX 10.9なのですが、システム環境設定で確認をしても、 プロキシの設定は何もされていないようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問