91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Nodejs進行反向代理

發布時間:2020-07-31 11:12:10 來源:網絡 閱讀:678 作者:jjjyyy66 欄目:網絡安全

在實際工程開發中,會有前后端分離的需求。

為了平滑的完成前端請求到后端各個獨立服務,需要一個中間件實現請求轉發的功能,利用Nginx可以實現,在這里,使用nodejs實現一個反向代理服務器

 

實際前端項目背景是node+express做前端路由,提供頁面的基礎渲染和請求轉發。

后端使用java springboot開發多個微服務(這里沒有使用spring cloud Eureka 做服務管理與API協調),每個服務的IP一致,端口不一致。

 

實驗環境:nodejs+express端口是3001,啟動一個java服務,端口是8088,在java中添加了一個filter,用來輸出收到的請求地址,使用postman左右客戶端發起請求

@Override    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) req;
        System.out.println("請求地址是"+((HttpServletRequest) req).getRequestURI());

首先在原express工程下安裝“http-proxy-middleware”中間件

npm install --save-dev http-proxy-middleware

在express的app.js中進行引用

var proxy = require('http-proxy-middleware');

 

根據實際使用情況,進行代理配置

1、轉發所有http請求

使用Nodejs進行反向代理

var options = {
        target: 'http://localhost:8088', // 目標主機
        changeOrigin: true,               // 需要虛擬主機站點    };var exampleProxy = proxy(options);  //開啟代理功能,并加載配置app.use('/', exampleProxy);//對地址為’/‘的請求全部轉發

使用Nodejs進行反向代理

測試:向127.0.0.1:3001發起任何請求,查看java端接收的情況

請求URL    服務接輸入結果
127.0.0.1:3001/請求地址是/
127.0.0.1:3001/test請求地址是/test
127.0.0.1:3002/test不轉發

2、轉發指定path的請求

app.use('/api', exampleProxy);

測試:

請求URL    服務接輸入結果
127.0.0.1:3001/api/test請求地址是/api/test
127.0.0.1:3001/test不轉發
127.0.0.1:3001/api請求地址是/api
127.0.0.1:3002/test不轉發

3、對指定path規則進行重定向

使用Nodejs進行反向代理

var options = {
        target: 'http://localhost:8088', // 目標主機
        changeOrigin: true,               // 需要虛擬主機站點
        ws: true,                         // 是否代理websocket        pathRewrite: {            '^/api/old-path' : '/api/new-path',     
            '^/api/remove/path' : '/path',           
            '^/api/auth/login':'/path'
        }
    };var exampleProxy = proxy(options);  //開啟代理功能,并加載配置app.use('/api', exampleProxy);//對地址為’/‘的請求全部轉發

使用Nodejs進行反向代理

測試:

請求URL    服務接輸入結果
127.0.0.1:3001/api/old-path請求地址是/api/new-path
127.0.0.1:3001/api/remove/path請求地址是/path
127.0.0.1:3001/api/auth/login請求地址是/path
127.0.0.1:3001/api/test請求地址是/api/test
127.0.0.1:3001/test不轉發

 

4、對指定規則進行路由重定向

這里可以簡單理解為,加入目前我啟動了2個及以上的java服務,端口分別是8088,8089,但前端發起的請求均是指向127.0.0.1:3001的,代理需要根據實際的前端請求,解析路徑后,分發到不同端口(8088,8089)的java服務中

使用Nodejs進行反向代理

var options = {
        target: 'http://localhost:8089', // 這里默認轉發目標為127.0.0.1:8089        router: {             '/rest': 'http://localhost:8088',//如果請求路徑是/api/rest,則將url的請求路由重定向
             '127.0.0.1:3001/api/8003': 'http://localhost:8003',  // 服務該url則重定向        }
    };var exampleProxy = proxy(options);  //開啟代理功能,并加載配置app.use('/api', exampleProxy);//對地址為’/‘的請求全部轉發

使用Nodejs進行反向代理

測試:

請求URL    服務接輸入結果
127.0.0.1:3001/api/rest8088:請求地址是/api/rest
127.0.0.1:3002/api/rest無響應
127.0.0.1:3001/api8088:請求地址是/api
127.0.0.1:3001/api/8003轉發失敗(因為我們目前沒有8003端口的服務)
127.0.0.1:3001/api/rest/32328088:請求地址是/api/rest/3232
127.0.0.1:3001/api8089:請求地址是/api

 

這里需要注意,代理默認對于/api下的所有請求,都轉發至8089端口的服務,對于router中的配置采取例外處理,會工具規則轉發至8088服務或8003服務

 

總結:

實際工程中,推薦采用第三種情況,通過“/api”等通配字符來區別所有要轉發的請求和常規http的頁面渲染請求。再根據實際后臺服務接口,去配置不同的router規則即可。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长葛市| 大厂| 连江县| 竹溪县| 卓资县| 磴口县| 潜江市| 莆田市| 高碑店市| 上蔡县| 苏州市| 巴彦县| 米脂县| 济南市| 思南县| 大余县| 晋江市| 嘉禾县| 甘德县| 山丹县| 秦皇岛市| 松潘县| 平南县| 河池市| 天等县| 蒙山县| 三亚市| 偏关县| 曲麻莱县| 岐山县| 昌吉市| 江北区| 桃江县| 新邵县| 舟曲县| 淮北市| 安平县| 偃师市| 梁山县| 灌南县| 成都市|