Подтвердить что ты не робот

Node http-proxy и express

Я пытаюсь сделать что-то вроде этого:

// 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).

Поэтому я переключил его на это, и он работал лучше. Проблема в том, что 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'));
});
4b9b3361

Ответ 1

Использование 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' });
});

Ответ 2

Очень простое решение, которое работает без проблем, а также с помощью cookie/authentication, используя express-http-proxy:

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);

Я знаю, что опаздываю, чтобы присоединиться к этой вечеринке, но я надеюсь, что это кому-то поможет.

Ответ 3

Я получил эту работу.

  • Установить Ghost и убедиться, что это свойство работает (порт по умолчанию - 2368)
  • Создайте веб-приложение node, используя экспресс (прослушивание на порту 80) - ничего особенного здесь
  • Установите node-http-proxy 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 и все маршруты работать.