鍍金池/ 問答/Linux  HTML/ 關(guān)于前端`vue`站點(diǎn)發(fā)布的一些疑問?

關(guān)于前端`vue`站點(diǎn)發(fā)布的一些疑問?

vue項(xiàng)目需要用到node、nginx發(fā)布,但是有一些問題還不是很明白,特來請教:

需求:

目前只有一臺前端服務(wù)器,所以 node、nginx 都會安裝到一起,并且后端api是按業(yè)務(wù)不同來發(fā)布的,所以我需要配置多個(gè)api服務(wù)器地址。

已知條件

  • 域名 xxxx.com
  • ip 10.12.11.xx:80

目錄結(jié)構(gòu):

  • xxxUI ——根路徑

    • package.json —— 服務(wù)器index.js依賴配置
    • index.js —— 基于node創(chuàng)建的web服務(wù)器代碼
    • node-modules —— index.js 依賴的包文件夾
    • www —— 前端項(xiàng)目根文件夾

node 創(chuàng)建服務(wù)器代碼 index.js 代碼如下:

var express = require('express');
var httpProxy = require('http-proxy');
var app = express();

var proxy  = httpProxy.createProxyServer({
    target: "10.12.11.xx:80/api",
    changeOrigin: true
});

//放置web站點(diǎn)的路徑
app.use(express.static('www'));

app.use('/api', (req, res) => {
    proxy.web(req, res);
});

app.use('/', function(req, res) {
   res.sendFile(__dirname+'/www/index.html');   
});

proxy.on('error', function (err, req, res) {
    console.log("proxy error", err);
    res.writeHead(500, {'Content-Type' : 'text/plain'});
    res.end('err');
});

var server = app.listen(9988, (req, res) => {

});

疑問:

  1. 假設(shè)我不需要用nginx,那么node服務(wù)器可以監(jiān)聽80端口,那么訪問xxxx.com的時(shí)候是可以正常訪問的,但是如果我需要用到nginx,那么node(對應(yīng)前端項(xiàng)目的服務(wù)器——通過httpProxy.createProxyServer創(chuàng)建的)一定不能用80端口,必須把80端口預(yù)留出來給nginx監(jiān)聽是嗎?
  2. 我在通過node api創(chuàng)建前端項(xiàng)目服務(wù)器(index.js文件)的時(shí)候,只能創(chuàng)建一個(gè)api代理地址,該如何配置呢?是修改創(chuàng)建服務(wù)器node api代碼還是修改nginx相關(guān)配置(因?yàn)椴煌K對應(yīng)api路徑都是有區(qū)別的,例如:會員模塊xxx.com/api/member/xxx、注冊登錄模塊xxx.com/api/system/xxx)?該怎么配置呢?
回答
編輯回答
失心人
  1. 一般是的,除非你nginx并不監(jiān)聽80端口,那就沒所謂(但誰會這樣干)。
  2. 根據(jù)描述你有多個(gè)服務(wù)提供api,代理部分最好不要放node服務(wù)里面,這樣耦合度太高,通過nginx代理。在我看來你這個(gè)node服務(wù)根本不需要,完全可以在nginx上完成。
2017年4月3日 13:16
編輯回答
瘋子范

nodejs并不是專門用來提供靜態(tài)服務(wù)和代理的,當(dāng)然這些node都可以做,但是nginx做的更好更專業(yè),我們?yōu)槭裁床挥脤I(yè)的工具去做他最擅長的事情呢?

2018年3月7日 06:32