api.mydomain.com
正常に動作する転送先の Apache リバース プロキシをセットアップしましたlocalhost:2000
。
しかし、私が抱えている本当の問題は、セッションに関するものですapi.mydomain.com
。セッションは からアクセスしても問題なく動作しlocalhost:2000
ます。
これは、プロキシされたドメインと関係があると思います...
サーバー.js
var express = require('express'),
app = express();
app.enable('trust proxy');
app.configure(function() {
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({ secret: 'supersecret'});
app.use(app.router);
});
app.get('/session', function(req, res, next){
console.log(req.session.username)
// this will be undefined when called from api.mydomain.com...
});
app.post('/session', function(req, res, next){
req.session.username = 'my username';
});
Apache構成
<VirtualHost *:80>
ServerName api.mydomain.com
ProxyPass / http://localhost:2000/
ProxyPassReverse / http://localhost:2000/
ProxyPreserveHost On
ProxyPassReverseCookieDomain api.domain.com localhost:2000
ProxyPassReverseCookiePath / /
</VirtualHost>
編集
特に、さらなるテストのために - 以下のコードを....の前app.use(app.router)
に追加します。app.configure()
app.use(function (req, res) {
res.send('<h2>Hello, your session id is ' + req.sessionID + '</h2>');
});
次のようになります (各行は、アプリへの新しい GET /session 要求を表します - ノードも再起動されていません)。
ローカルホスト:2000
Hello, your session id is sHkkESxJgzOyDhDwyTjwpNzq
Hello, your session id is sHkkESxJgzOyDhDwyTjwpNzq
Hello, your session id is sHkkESxJgzOyDhDwyTjwpNzq
api.mydomain.com
Hello, your session id is uuo4U5ierZAG8LSH1BdwTlVf
Hello, your session id is 8BxL97Bo35SDt4uliuPgnbia
Hello, your session id is 0xkqZZpzQNvTsQpbJtUlXgkR
設定情報
NodeJS v0.8.8
アパッチ v2.4.2
ExpressJS v3.0.0rc4
更新 2
さて、これまでのところmydomain.com/api
、すべてを修正しているように見えるので、単純な使用に解決しました。つまり、Apache が Express とのドメイン通信を処理する方法に関係していると思います。