1

/n/ リクエストを node.js に渡し、それ以外はすべてポート 8080 の Apache に任せたいと考えています。プロキシはポート 80 で実行され、/n/ のコードはポート 9000 にあります。

ただし、socket.io正しくプロキシされているとは思わないため、次のようなノードは壊れています-socket.ioクエリは、予想どおりApacheから404を返します。

404お探しのページが見つかりませんでした

見つかりません

要求された URL /socket.io/socket.io.js がこのサーバーで見つかりませんでした。


localhost ポート 8080 の Apache/2.2.22 (Ubuntu) サーバー

/n/ の開始 HTML コード:

<!DOCTYPE html>
<html>
<head>
<script src="/socket.io/socket.io.js"></script>

プロキシ:

var app = require('http').createServer(handler);
var io = require('socket.io').listen(app);
var fs = require('fs');
var url = require('url');
var httpProxy = require('http-proxy');
io.set('log level', 1); 
app.listen(9000);

httpProxy.createServer({
router: {
    'localhost/n': '127.0.0.1:9000',
    'localhost': '127.0.0.1:8080'
    }

}).listen(80);

socket.io/socket.io.jsプロキシがApacheではなくノードを通過するようにするにはどうすればよいですか? 静的ファイル (css/js など) を提供する同じコードを使用してみましたが、存在する実際のフォルダーがsocket.io存在しないようです - ノードはそれを書き換えているようです。

4

1 に答える 1

0

node.js だけでは、静的ファイルを提供するために apache がすぐに行うことはできません。そのため、すべての url/request/file をルーターで指定する必要があります。すばやく実行するには、ここで node.js のエクスプレスを読む か、ルーターにファイルを指定するだけです

    router: {
    'localhost/n': '127.0.0.1:9000',
    'localhost': '127.0.0.1:8080',
    '/socket.io/socket.io.js': 'path/to/the/file'
    }
于 2012-11-08T03:41:26.243 に答える