2017-10-10 23 views
0

ApacheサブディレクトリをNode.jsアプリケーションにリダイレクトしたいと思っています。 http://example.com/subdirnameを通じて自分のサイトに接続しようとすると、今私はsocket.ioために404エラーを取得し、しかしApacheサブディレクトリをNode.jsにリダイレクトするときにsocket.ioにアクセスする

<VirtualHost *:80> 

    # Already existing Apache lines here removed to keep this post short 

    # The following are all the new lines I have added 

    ProxyRequests Off 
    ProxyPreserveHost On 
    ProxyVia Full 
    <Proxy *> 
     Require all granted 
    </Proxy> 

    <Location /mysubdir> 
     ProxyPass http://127.0.0.1:3000 
     ProxyPassReverse http://127.0.0.1:3000 
    </Location> 
</VirtualHost> 

:私は私の通常のドメインのための私のApacheのVirtualHostの.confファイルに次のように追加されました。私app.jsで

私は次のように持っていた:

var express = require('express'), 
    app = express(), 
    server = require('http').createServer(app), 
    io = require('socket.io')(server, {path: '/mysubdir/socket.io'}).listen(server); 

しかし、それはまだ私に404エラーを与える:別のstackoverflowポストに基づいて

var express = require('express'), 
    app = express(), 
    server = require('http').createServer(app), 
    io = require('socket.io').listen(server); 

私はこれに私のapp.jsを変更。私は間違って何をしていますか?

更新:私は以下の回答を投稿してくれました。私は数分間それをテストしましたので、あなたが道を離れて問題を起こすようなことに気付いた場合は、それを見て気軽に見てください。

答えて

0

私は自分のapp.jsを自分のhtmlコードに変更する必要はないことを発見しました。

var express = require('express'), 
    app = express(), 
    server = require('http').createServer(app), 
    io = require('socket.io').listen(server); 

そして、私のhtmlコードに次の行を変更:

私が変更されました:

<script type="text/javascript" src="/socket.io/socket.io.js"></script> 

へ:

<script type="text/javascript" src="/mysubdir/socket.io/socket.io.js"></script> 
だから私はに私のapp.jsを復元し、解決するために

私も変更されました:

var socket = io.connect(); 

var socket = io.connect('http://example.com:3000'); 

すべてが、今それが必要な方法を動作しているようです。しかし、私が変える必要があったのはクライアント側でした。私が見つけた他の例のほとんどは、サーバーサイドのアプリケーションを変更するか、Apacheホストファイルにリダイレクトを追加する必要がありました。どちらも私のために働いたわけではありません。おそらく私には何かがありませんか?

関連する問題