我正在尝试做这样的事情:
// Setup prox to handle blog requests
httpProxy.createServer({
hostnameOnly: true,
router: {
'http://localhost': '8080',
'http://localhost/blog': '2368'
}
}).listen(8000);
以前我用过这个:
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
基本上,我仍然希望使用快递......但是,当人们前往http://localhost/blog
时,我会被带到博客但仍然可以通过port 8080
(最终将是80端口)服务{} p>
所以我把它换成了它,效果更好。问题是express表示接管路由(从我能说的)
var options = {
// pathnameOnly: true,
router: {
'localhost': 'localhost:8080',
'localhost/blog': 'localhost:2368'
}
}
// Setup prox to handle blog requests
var proxyServer = httpProxy.createServer(options);
proxyServer.listen(9000);
require('./app/server/router')(app);
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
答案 0 :(得分:38)
使用带快递的http-proxy 1.0:
var httpProxy = require('http-proxy');
var apiProxy = httpProxy.createProxyServer();
app.get("/api/*", function(req, res){
apiProxy.web(req, res, { target: 'http://google.com:80' });
});
答案 1 :(得分:8)
一个非常直接的解决方案,使用express-http-proxy
无缝地工作,并使用Cookie /身份验证:
var proxy = require('express-http-proxy');
var blogProxy = proxy('localhost/blog:2368', {
forwardPath: function (req, res) {
return require('url').parse(req.url).path;
}
});
然后简单地说:
app.use("/blog/*", blogProxy);
我知道我加入这个派对已经很晚了,但我希望这对某人有所帮助。
答案 2 :(得分:4)
我得到了这个工作。
npm install http-proxy
为/ blog *创建代理对Ghost服务的请求的通配符路由
var httpProxy = require('http-proxy');
var proxy = new httpProxy.RoutingProxy();
app.get('/blog*', function (req, res, next) {
proxy.proxyRequest(req, res ,{
host: 'moserlap.splitvr.com',
port: 2368
});
});
更新Ghost配置以使用子目录(仅支持0.4.0 +)
config = {
// ### Development **(default)**
development: {
// The url to use when providing links to the site, E.g. in RSS and email.
url: 'http://127.0.0.1/blog',
...
您现在应该可以点击http://yoursite.com/blog并且所有路线都有效。
答案 3 :(得分:0)
我使用了简单的解决方案来代理我的GET / POST请求。
var httpProxy = require('http-proxy');
var apiProxy = httpProxy.createProxyServer();
app.post("/api/*", function(req, res) {
apiProxy.web(req, res, { target: 'http://localhost:5000'})
});
app.get("/api/*", function(req, res) {
apiProxy.web(req, res, { target: 'http://localhost:5000'})
});
处理所有类型请求的另一种简便方法是:
app.all("/api/*", function(req, res) {
apiProxy.web(req, res, { target: 'http://localhost:5000'})
});
注意:以上功能必须在 bodyparser 之前。