nodejs抓取动态网页(Nodejs反向代理的建站问题,你知道吗?小前端)

优采云 发布时间: 2022-04-06 12:17

  nodejs抓取动态网页(Nodejs反向代理的建站问题,你知道吗?小前端)

  所有的demo都不是完整的程序,所有没有上线的程序都只是demo;

  作为Web开发的后起之秀,在目前的国内环境下,Nodejs虽然不如PHP流行,但没有.net的海量基础,也无法覆盖Java的高度。但是,Nodejs 基于谷歌 V8 引擎的速度、异步 IO 和事件模型,无疑将是 Web 开发的一大创新;我是一个小前端,自从知道了Nodejs,就觊觎了好久,期待终于可以在闲暇之余用Express4.x做一个断断续续的个人博客(花开花)建筑);

  为了让我的博客不只是本地demo,我买了一台服务器,搭建好环境,选好日期,准备上线了。上线后发现自己是个白痴……在目前的国家,Nodejs是小众。当然,问题在所难免,你可以随便抱怨,但既然选择了,就必须相信自己不是瞎子,当然要坚定地走下去。继续; 关于上线后需要先解决的域名绑定问题,我会分享给喜欢Nodejs的朋友和前端朋友;可能你做过.net,PHP什么的,有IIS,一键建站软件,那没关系,我只是站在一个小前端的角度,分享一下基于Nodejs建站的问题;

  Nginx 反向代理方式现在很流行。百度的时候,一开始也是选择使用Nginx反向代理我的博客站点;我是服务器新手,一开始真的伤不起,但也没什么好怕的。是的,你只需要根据别人分享的模型修改成你的,除非你想认真运维;当然也难免会出现一些无法预料的小问题,比如:客户代理后终端的IP获取问题(我当时获取的所有客户的IP都是一样的……),上传的大小限制文件,需要重新配置相关的Nginx配置项;

  基本配置如下:

  命令行进入nginx.exe目录->启动nginx(启动nginx)->打开conf目录下的nginx.conf文件->添加新的upstream

  upstream nodejs{

server 127.0.0.1:3000; //你的Express项目端口

# server 127.0.0.1:3001;

keepalive 64;

}

  -> 参考下面服务器中定义的nodejs{}

  完整的片段如下:

  server {

listen 80;

server_name www.famanoder.com famanoder.com; //请求到80端口的host

location / {

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Host $http_host;

proxy_set_header X-Nginx-Proxy true;

proxy_set_header Connection "";

proxy_pass http://nodejs;

}

}

  如果不出意外,您现在可以使用域名访问您的博客;

  Nodejs 功能强大;

  几天后,学习了Nodejs的http-proxy模块,用于创建代理服务器;反正都是折腾,所以决定不使用nginx,而是使用Noders的http-proxy;不是nginx不好用,只是个人选择偏好而已;相信前端的 Noder 一定会对自己的模块更加热情;

  http.createServer() 创建一个常规的http服务器*敏*感*词*80端口,通过http-proxy模块proxy.createProxyServer()创建一个代理服务器,通过proxy.web()方法分发每个请求;

  在根目录下新建proxy.js文件:

  var proxy=require(‘http-proxy’).createProxyServer({});

proxy.on(function(err,req,res){

res.writeHead(500,{

‘Content-Type’:’text/plain’

});

});

var server=require(‘http’).createServer(function(req,res){

var host= req.headers.host;

switch(host){

case ‘www.famanoder.com’:

proxy.web(req,res,{target:’http://localhost:3000’});

break;

case 'famanoder.com':

proxy.web(req, res, { target: 'http://localhost:4030' });

break;

default:

res.writeHead(200, {

'Content-Type': 'text/plain'

});

res.end('Welcome to my server!');

}

});

console.log("listening on port 80")

server.listen(80);

  是不是也很好,看起来很酷,OK,下一步就是去app.js,使用proxy模块;

  加一句:require('./proxy'); 就是这样,去浏览器看看是否也实现了反向代理。

  至此,Nodejs反向代理的两种方式都已经实现了。这不是Demo,你的程序真的在运行;下一步是根据其他具体业务跟进进一步探索;

  上周末出去散步的时候,看到一个大叔的背上印着一行字:“想当将军!” 那时,我在心里给了这位大叔一万个赞。我是一个平民。码农,路漫漫其修远兮,但——我们还年轻!

  本文为慕课网原创作者,转载请注明【原作者及本文链接地址】。侵权必究,谢谢合作!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线