запрос прокси в node.js / express - PullRequest
       22

запрос прокси в node.js / express

2 голосов
/ 16 августа 2011

У меня сервер nginx в качестве внешнего интерфейса для приложения node.js.
Когда запрос попадает в приложение, я бы хотел немного изменить его (запрос) и переслать его в другой node.js.приложение.Каков наилучший способ сделать это?

Я думал о прокси-узле, но так как я использую expressjs в приложениях для нод, я не совсем уверен, как использовать прокси-узел и выразить одновременновремя.

есть идеи?

ОБНОВЛЕНИЕ

Могу ли я использовать res.redirect в моих маршрутах expressjs для пересылки в другое приложение node.js?Я только что попробовал это, но это не работает, как ожидалось.

Ответы [ 3 ]

7 голосов
/ 16 августа 2011

Я использую node-http-proxy и express.js одновременно довольно успешно. Вот источник coffeescript.

querystring = require 'querystring'
httpProxy = require 'http-proxy'

#Your express setup code would be here
#omitted for brevity....

proxy = new httpProxy.HttpProxy()

#1. Whatever HTTP Methods and URL paths you want to modify and forward
app.all '/foo/*', (req, res) ->
  #2. Your logic to modify the request goes here
  #Note there are limitations to what you can do.
  #I add some extra query parameters to the URL
  query = if '?' in req.url then '&' else '?'
  params =
    extra1: 'foo'
    extra2: 'bar'
  req.url = [
    req.url
    query
    querystring.stringify params
  ].join ''
  #3. The host and port could also be pulled from the req object if needed
  proxy.proxyRequest req, res,
    host: 'somehost.example'
    port: 80
1 голос
/ 16 января 2015

Я работал с abit над настройкой прокси для node.js с экспрессом наверху, который handelse get, put & post.

Это то, что я придумал:

var DEVEL_PATH = "https://your-url.com";
var API_PATH = "/your-api-route";

app.use(API_PATH, function(req, res) {
    var url = DEVEL_PATH + API_PATH + req.url;
    if(req.method == "GET") {
        req.pipe(request(url)).pipe(res);
    } else {
        req.pipe(request[req.method.toLowerCase()]({url: url, json: req.body})).pipe(res);
    }
});

В основном, это просто забота - это получить, а затем просто запросить другой URL и направить его в мой ответ.Если это запрос post / put, возьмите тело запроса и опубликуйте его как объект JSON.

Помните !!

Вам необходимо следующее:

  1. экспресс
  2. запрос
  3. body-parser

Аони должны быть настроены, проверьте каждый из них для установки

1 голос
/ 16 августа 2011

res.redirect ('http://otherapp.com') должно работать, если ваше другое приложение прослушивает другой порт или имя хоста / домена, но объект запроса может передаваться не так, как вы ожидаете. Как вы его модифицируете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...