资讯专栏INFORMATION COLUMN

Nodejs绑定域名与反向代理

thekingisalwaysluc / 1350人阅读

摘要:所有的都不是完整的程序,所有未上线的程序都仅仅是个作为开发的后起之秀,在现在的国内环境下,虽比不上的火热,没有那么广大的群众基础,盖不过的高大上,但基于谷歌引擎的极速,异步与事件模型,无疑将是开发的重大革新我是一个小前端,自从知道,就觊觎其

所有的Demo都不是完整的程序,所有未上线的程序都仅仅是个Demo;

Nodejs作为Web开发的后起之秀,在现在的国内环境下,虽比不上PHP的火热,没有.net那么广大的群众基础,盖不过Java的高大上,但Nodejs基于谷歌V8引擎的极速,异步IO与事件模型,无疑将是Web开发的重大革新;我是一个小前端,自从知道Nodejs,就觊觎其好久,翘首以盼终于在业余用Express4.x断断续续做了一个个人博客;

为了让我的博客不只是一个躺在本地的Demo,我买了个服务器,搭建好环境,选好日子,准备上线了,上线后就发现自己傻逼了……在目前的国内,Nodejs算是小众的,最多是个比较有情调的,适合有闲情雅致的人去消遣;当然,问题不可避免,牢骚你也可以随便,但既然选择了,就要相信自己不是盲目的,当然还得坚定的走下去;在此和那些喜欢Nodejs,喜欢前端的小伙伴们分享一下关于上线后首先要解决的域名绑定问题;可能你搞过.net、PHP什么的,有IIS、一键建站的软件,那么这些都无所谓,我只是站在一个小前端的视角,分享下基于Nodejs的建站问题;

现在已经非常流行Nginx反向代理的方式了,当我百度后最开始也是选择了用Nginx来反向代理我的博客站点;我是个服务器小白,一开始真心伤不起啊,不过也没什么可怕的,你只需要按照别人分享的模子,修改成你的就可以了,除非你想正儿八经的搞运维;当然不可避免的肯定会出现些未预知的小问题,比如:代理后客户端的IP获取问题(我那时获取所有客户的IP都是一样的……),上传文件的大小限制问题,都需要你再次重新配置相关的Nginx配置项;

基本配置方式如下:

命令行进入nginx.exe目录 -> start nginx (启动nginx) -> 打开conf目录里的nginx.conf 文件 –> 新增一段upstream

  upstream nodejs{

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

      # server 127.0.0.1:3001;

      keepalive 64;

  }

-> 在后面的server{}里引用这里定义好的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;
         }
  }
     
 重启nginx:nginx –s reload或者nginx –c conf/nginx.conf

那么不出意外的话,你现在可以用域名访问你的博客了;

Nodejs是强大的;

几天后我知道了Nodejs的http-proxy模块,就是用来创建代理服务器的;反正都是折腾,我毅然决然选择了不用nginx,使用属于Noders的http-proxy;并不是nginx不好用,只是个人选择偏好问题;相信前端出身的Noders们也肯定会对自家的模块更热衷;

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,你的程序真正在跑了;接下来就是要根据具体的其他业务,后续跟进和进一步探索了;

上个周末出去溜达时,看到一个大叔的后背上印着一行字:“要做就做大将军!”,当时我就在心里为这位大叔点了一万个赞,我本布衣,一介码农,路漫漫其修远兮,道阻且长,可是——我们正青春!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78236.html

相关文章

  • 阿里云服务器部署 nodejs + mongodb + nginx 反向代理 + https配置 s

    摘要:感谢老师,老师的慕课网教程购买阿里云服务器及域名终端连接阿里云服务器环境输入密码购买时的密码如果出现这个问题的解决方案解决方法查看硬盘挂在情况如果有数据盘的情况下查看硬盘使用情况通过设置快捷登录权限,可以增加几个拥有权限的用户下查 感谢 Scott 老师,Scott老师的慕课网教程 https://coding.imooc.com/clas... 1. 购买阿里云服务器及域名 2. ...

    jerryloveemily 评论0 收藏0
  • 阿里云服务器部署 nodejs + mongodb + nginx 反向代理 + https配置 s

    摘要:感谢老师,老师的慕课网教程购买阿里云服务器及域名终端连接阿里云服务器环境输入密码购买时的密码如果出现这个问题的解决方案解决方法查看硬盘挂在情况如果有数据盘的情况下查看硬盘使用情况通过设置快捷登录权限,可以增加几个拥有权限的用户下查 感谢 Scott 老师,Scott老师的慕课网教程 https://coding.imooc.com/clas... 1. 购买阿里云服务器及域名 2. ...

    张春雷 评论0 收藏0
  • 通过apache的反向代理实现多用途服务器

    摘要:其他事项需要开启代理的拓展需要设置下位置在,下在下。经过我的测试,对自身的其他端口的代理和对的代理是正常工作的。 遇到问题 最近一直有个问题困惑着我,apache、nodejs、tomcat不能同时在服务器80端口运行,对域名进行设置时使用ip:port又不能得到期望的结果(结果一直是以一个iframe的形式),因此就在segmentFault上发问:同一台服务器运行多个http服务如...

    cuieney 评论0 收藏0
  • nodejs之http-proxy几点常见问题

    摘要:部署到线上却发现,请求总是指向第一个二级域名,其他的二级域名访问不到。后端配置了后端,不仅仅配置了二级域名,还配置了二级目录,前端部署的服务也一样需要二级目录。 http-proxy http-proxy是一个nodejs的http代理库,已经被webpack-dev-server集成进来,做代理使用。原因是在前后端分离大行其道的今天,我们如果需要在本地调后端api接口,不配置host...

    gitmilk 评论0 收藏0
  • 前端常见跨域解决方案(全)

    摘要:需注意的是由于同源策略的限制,所读取的为跨域请求接口所在域的,而非当前页。目前,所有浏览器都支持该功能需要使用对象来支持,也已经成为主流的跨域解决方案。反向代理接口跨域跨域原理同源策略是浏览器的安全策略,不是协议的一部分。 什么是跨域? 跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。 广义的跨域: 1.) 资源跳转: A链接、重定向、表单提交 2.) 资源...

    canger 评论0 收藏0

发表评论

0条评论

thekingisalwaysluc

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<