启动本地服务+配置反向代理

首先目前前端市场中,启动前端本地服务和配置反向代理的技术已经太多了,随随便便就能列出个一二三四,我这里只是记录自己用到的两种方式,以及自己遇到的遗留问题:

第一种:Nginx    第二种:node+express

一、先说第一种,比较传统,但是nginx的不好管理的缺点一致为大家所诟病。直接上配置:

    # ml(服务名称,随意起,仅仅是给自己看的)
    server {
        listen 9000;  #(服务的端口 自定义)
        server_name localhost; #(本地访问域名,这个我不太确定,一般都为localhost)

        #后台服务
        location /api/v1 { #(需要代理的请求规则,是自定义的,可以视为正则)
            proxy_pass http://**.**.**.**:****/api/v1; # (代理服务器的地址端口)
        }
        location / { # (除去需要代理外的资源需要访问的本地路径)
            root   D:/workspace/Insight-ml/static;
            index  index.html index.htm;
        }
    }

括号内的都可以去掉,我这里只是加以解释。另外nginx对格式要求比较严格,空格及标点符号都不要错。

上面这段配置放到nignx》conf》nginx.conf中,文件结尾最后一个}内,调整对其格式。保存启动服务即可。

可以双击nginx.exe(这样不太稳定好像)。也可以在目录下执行cmd (推荐).

关闭的时候,只能通过任务管理器手动结束进程....

 

二、再来说另一种,node+express 比较轻便,且比较好管理。

首先,安装依赖的包,node+npm就不说了,假设你已经装过了(没装的自己搜一下)

npm install -D express   //导入express框架的npm包
npm install -D http-proxy-middleware   //导入用于设置反向代理的npm包

然后,在项目的根目录下创建一个sever.js文件,代码如下:

/**
 * Created by cuishoujia on 2020/4/21.
 */
const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');

const app = express();

//这一句是标明项目的入口,即index.html的位置,我这里位置就是./static/index.html
app.use(express.static('./static'))

//  /api是匹配规则  target是代理服务器位置
app.use('/api', createProxyMiddleware({ 
    target: 'http://**.**.**.**:****', changeOrigin: true 
}));

app.listen(3000,_=>{
    //服务启动成功的回调,也可以不定义
    console.log('服务启动成功!');
    console.log('代理启动成功!');
});//端口自定义

 配置完成后,在当前目下启动cmd,执行 node sever  即可。停止服务ctrl+c。

另外,还可以引入ip 和 open npm包来进行一些便民服务。。。。

//注意需要先安装address包、open包
const ip = require('address').ip()	//导入address包,获取本地ip地址
const open = require('open')		//导入open包
....
....
....
app.listen(3000,_=>{
    //服务启动成功的回调,也可以不定义
    console.log('服务启动成功!');
    console.log('代理启动成功!');
    open(`http:${ip}:3000`)   //每次服务启动成功后自动打开浏览器页面
});

 

结束。两种方式。

三、再说一下我的遗留问题,已在提问区提问,这里再说一下:

https://ask.csdn.net/questions/1064581

在最初,我使用express-http-proxy设置代理启动本地服务,服务可以正常启动,访问api接口时报错405 method not allowed,接口请求时post方式,但是请求的资源并非静态资源,是个登录的接口。
用nginx设置代理可以正常访问,用express-http-proxy设置就是不行。
按着官方API一步步来的。
上代码:

/**
 * Created by Administrator on 2017/3/22.
 */
var express = require('express');
var proxy = require('express-http-proxy');
var app = express()

app.use('/api', proxy('http://**.**.**.**:5000'));

app.use(express.static('./static'))
app.listen(9001, () => {
  console.log('running')
});

图片说明

令人头大的问题,我看github上也有人提问,但是没人回答。。。哪位了解的朋友知其原因,还请指个一二三,非常感谢。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值