免费国产欧美国日产_少妇AV一区二区三区无码_蜜桃精品av无码喷奶水小说_jk18禁网站视频_精产国品一二三级产品区别_被夫の上司に犯波多野结衣_78m成人手机免费看_最爽最刺激18禁视频_偷偷色噜狠狠狠狠的777米奇

易優(yōu)GEO 重磅上線 ~ 一站式GEO優(yōu)化工具,讓豆包、文心一言、DeepSeek 在回答中主動(dòng)推薦你的品牌,搶占AI流量入口!  點(diǎn)擊查看

小程序模板網(wǎng)

node插件http-proxy反向代理實(shí)現(xiàn)對(duì)端口的分發(fā)

發(fā)布時(shí)間:2018-04-14 15:19 所屬欄目:小程序開發(fā)教程

本文用于輔助這個(gè)問題的解答: 
服務(wù)器的同學(xué),一個(gè)服務(wù)器怎么運(yùn)行多個(gè)小程序 
分享者:孟星魂,原文地址

最近自己動(dòng)手做了一個(gè)微信小程序,是直接買的騰訊云的小程序解決方案,怎么說那,用起來還是會(huì)遇到不少問題的,不過在交流群里還是會(huì)有很多人幫助你的。

閑話少說,因?yàn)橐僮鲆粋€(gè)別的服務(wù),就想直接用這臺(tái)小程序的服務(wù)器就好了,但是服務(wù)器的80端口已經(jīng)被小程序占用了,所以只能使用反向代理,說白了就是完成端口的分發(fā)。我們不妨以域名為路由分發(fā):凡是 AA.com 域名請(qǐng)求的,分發(fā)到 PHP 82 端口執(zhí)行;凡是 BB.com 域名請(qǐng)求的,分發(fā)到 ASP 83 端口執(zhí)行;…… 如此類推。當(dāng)然這里的端口只說說明用而已,您可以任意配置,反正就是從 80 端口接收回來的請(qǐng)求,先作一次處理,進(jìn)而分發(fā)。反向代理,通俗地講,就是左手轉(zhuǎn)右手而已。

放到我實(shí)際的項(xiàng)目里面,先npm init一個(gè)新的項(xiàng)目,安裝http-proxy插件用來反向代理,這個(gè)服務(wù)占用80接口,然后我把之前小程序占用的80接口,改為了3000接口。(這個(gè)端口號(hào)大家隨便選)。

在項(xiàng)目下面新建一個(gè)app.js文件,內(nèi)容如下:

 

				
  1.  
  2. var http = require('http'), httpProxy = require('http-proxy');
  3.  
  4. // 新建一個(gè)代理 Proxy Server 對(duì)象
  5. var proxy = httpProxy.createProxyServer({});
  6.  
  7. // 捕獲異常
  8. proxy.on('error', function (err, req, res) {
  9. res.writeHead(500, {
  10. 'Content-Type': 'text/plain'
  11. });
  12. res.end('Something went wrong. And we are reporting a custom error message.');
  13. });
  14.  
  15. // 在每次請(qǐng)求中,調(diào)用 proxy.web(req, res config) 方法進(jìn)行請(qǐng)求分發(fā)
  16. var server = require('http').createServer(function(req, res) {
  17. // 在這里可以自定義你的路由分發(fā)
  18. var host = req.headers.host, ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
  19. console.log("client ip:" + ip + ", host:" + host);
  20.  
  21. switch(host){
  22. case 'www.111.cn':
  23. proxy.web(req, res, { target: 'http://localhost:3000' });
  24. break;
  25. case 'vote.111.cn':
  26. proxy.web(req, res, { target: 'http://localhost:9527' });
  27. break;
  28. default:
  29. res.writeHead(200, {
  30. 'Content-Type': 'text/plain'
  31. });
  32. res.end('Welcome to my server!');
  33. }
  34. });
  35.  
  36. console.log("listening on port 80")
  37. server.listen(80);

如代碼所示,當(dāng)訪問www.111.cn的時(shí)候,請(qǐng)求就被轉(zhuǎn)發(fā)到了3000接口上,訪問vote.111.cn時(shí)就被轉(zhuǎn)發(fā)到了9527這個(gè)接口上,自己當(dāng)時(shí)很困惑的是怎么在小程序的80接口上去做轉(zhuǎn)發(fā),其實(shí)80是個(gè)獨(dú)立的服務(wù),只做轉(zhuǎn)發(fā)這個(gè)一件事情,別的服務(wù)都要放到別的端口上去的。

用node做服務(wù)器的話,推薦大家用pm2來做管理,這樣可以把一臺(tái)服務(wù)器上的所有服務(wù)都監(jiān)管起來,利于開發(fā)調(diào)試。



易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://m.szcjxy.com/wxmini/doc/course/23404.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢: 點(diǎn)擊咨詢
在線客服