Apacheサーバーのポート80でnode.jsアプリを実行したいと思います。私はApacheを介して2つの方法を試しました:
<VirtualHost *:80>
ServerName domainName.com
ServerAlias www.domainName.com
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://domainName:8080
ProxyPassReverse http://domainName:8080
</Location>
</VirtualHost>
これを使用すると502 proxy error
、Chromeコンソールに表示されます。サーバーは自分のファイルや他のファイルを見つけることができCSS
ませSocket.io
んJS
。
http://domainName.com:8080/
更新:リンクの前に配置することで、CSSファイルと通常の.jsファイルのこのエラーを解決しました。しかし、socket.ioにはまだ問題があります!Socket.ioが見つかりません!
そして2番目の方法はhttp-proxy
モジュールを使用することです(これは私が見つけた例です、この投稿の下のコメントを見てください):
var http = require('http'),
httpProxy = require('http-proxy'),
proxyServer = httpProxy.createServer ({
hostnameOnly: true,
router: {
'domain.com': '127.0.0.1:81',
'domain.co.uk': '127.0.0.1:82',
'127.0.0.1': '127.0.0.1:83'
}
});
proxyServer.listen(80);
ここで説明したのは、nodejsとapacheを同じポート80に配置する方法です。
を使用しているので、これをコードで機能させる方法がわかりませんExpress
。
これは私の関連するコードの部分です:
var express = require('express');
var http = require('http');
var io = require('socket.io');
var connect = require('connect');
var sanitize = require('validator').sanitize;
var app = express();
var MemoryStore = express.session.MemoryStore;
var server = http.createServer(app);
var sessionStore = new MemoryStore();
var io = io.listen(server);
app.configure(function() {
//app.use(express.logger());
app.use(express.cookieParser());
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.session({
store: sessionStore,
secret: 'someSecret',
key: 'cookie.sid', maxAge: null }));
});
app.use(app.router);
app.use("/styles", express.static(__dirname + '/styles'));
app.use("/images", express.static(__dirname + '/styles/images'));
app.use("/js", express.static(__dirname + '/js'));
// routing
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
server.listen(8080);
私は2番目の方法を好むので、誰かが私がそれを機能させるのを手伝ってくれるなら、私はそれを本当に感謝します。