TypeScript:node-http-proxy에서 요청에 따라 서버의 역방향 프록시를 할당하는 방법

8011 단어 Node.jsTypeScript
본고는 node-http-proxy를 사용하여 TypeScript로 분배 서버의 역방향 프록시를 만드는 방법을 소개한다.
node-http-proxy의 기본적인 사용 방법은 TypeScript:node-http-proxy 재작성 요청/응답을 위한 역방향 프록시를 만드는 방법에서 설명되었으니 함께 참조하십시오.

본문의 목표


HTTP 요청 경로에 따라 TypeScript를 사용하여 HTTP 요청을 서버 1 및 서버 2에 할당하는 리버스 프록시를 작성할 수 있습니다.

할당 요청을 위한 역방향 에이전트 구현


여기에는 HTTP 요청의 경로에 따라 HTTP 요청을 서버 1과 서버 2에 할당하는 역방향 프록시 설치 예가 나와 있습니다.
import http, {IncomingMessage, ServerResponse} from 'http'
import httpProxy from 'http-proxy'

// HTTPサーバ1
http.createServer((req: IncomingMessage, res: ServerResponse): void => {
    res.write('HTTP Server 1')
    res.end()
}).listen(9001)

// HTTPサーバ2
http.createServer((req: IncomingMessage, res: ServerResponse): void => {
    res.write('HTTP Server 2')
    res.end()
}).listen(9002)

// プロキシサーバ
const proxy = httpProxy.createProxyServer()
http.createServer((req: IncomingMessage, res: ServerResponse): void => {
    // パスに応じて送信先を変える処理
    const target = req.url && req.url.startsWith('/server1')
        ? 'http://127.0.0.1:9001'
        : 'http://127.0.0.1:9002'
    proxy.web(req, res, {target})
}).listen(8000)
이곳의 요점은 쓰기와 요청에 상응하는 논리를 바탕으로 다음과 같은 이념을 가지고 있다는 것이다.
const proxy = httpProxy.createProxyServer()
http.createServer((req: IncomingMessage, res: ServerResponse): void => {
    //
    // リクエストに応じたロジックを書く場所
    //
    proxy.web(req, res, options)
}).listen(proxyPortNumber)
처음에 보여준 실시례의 프록시 서버를 가동해 보십시오.
다음 요청을 보내면
GET /server1/foo/bar HTTP/1.1
Host: localhost:8000
요청이 서버 1에 할당되고 다음 응답으로 돌아갑니다.
HTTP/1.1 200 OK
connection: close
date: Tue, 24 Sep 2019 08:51:38 GMT
transfer-encoding: chunked

HTTP Server 1
이번에는 서버 2에 할당된 요청을 던져 보십시오.
GET /foo/bar HTTP/1.1
Host: localhost:8000
예상한 대로 서버 2에서 응답을 반환합니다.
HTTP/1.1 200 OK
connection: close
date: Tue, 24 Sep 2019 09:07:24 GMT
transfer-encoding: chunked

HTTP Server 2

참고 문헌

  • http-party/node-http-proxy: A full-featured http proxy for node.js
  • 좋은 웹페이지 즐겨찾기