Nodejs绑定域名与反向代理

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

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

原文来自(花满楼):http://www.famanoder.com/bokes/5625049a4c0b02e40e14e107

时间: 2024-10-28 20:56:27

Nodejs绑定域名与反向代理的相关文章

Nodejs实现TCP反向代理

场景: 你有若干机器,却只有一台能被外网访问,如果要让外网访问到你其它机器上的服务,就需要做反向代理,在上一篇文章中,我们用nodejs轻松实现了http反向代理.如果是TCP服务,例如mysql数据库,同样用nodejs来做实现一个反向代理也是很容易的. 第一种方式: var net = require('net'); // parse "80" and "localhost:80" or even "42mEANINg-life.com:80"

腾讯云(ubuntu)下安装 nodejs + 实现 Nginx 反向代理

本文将介绍如何给腾讯云上的 Ubuntu Server 12.04 LTS 64位主机安装 node 及 nginx,并简单配置反向代理. 笔者在整个安装过程中遇到不少麻烦(不赘述),如果你希望少踩坑,可以按本文的步骤进行安装部署. 一. 新版 nodejs 安装 这里强烈推荐使用 nvm (Node版本管理器),其它方式的安装或多或少都有些问题. 具体步骤如下: 1. 通过 git 指令下载nvm 执行指令如下,我们把nvm下载到 /root/git/ 中去(记得要先安装 git): [[em

nginx做nodejs(express等通用)反向代理

首先配置环境nginx+nodejs...(没有请看我的其他文章,此处不重复) cd 到nginx的site-available目录 ubuntu的在 cd /etc/nginx/site-available/ 创建一个server文件 sudo touch testServer 然后可以copy下面的代码进去了(勤劳的coder可以手写一遍的哦) http{ keepalive 65; #超时 gzip on; #是否开启压缩模块 gzip_comp_level 6; #压缩比例 1-9 gz

nodejs 实现反向代理

要说到反向代理,很多人第一时间想到的是nginx,没错,在这个领域做得最好的,我觉得应该算是nginx,为什么想用nodejs来实现?处于一种研究的心态和让反向代理更好的为自己服务,毕竟要修改nginx还需要c c++等这些方面的知识,而且我对nodejs更为熟悉一点(说白了就是不懂C++-..). 说到反向代理,那首先要明白什么是反向代理,我们一般用代理就是我要访问一个网站,但是直接访问不了,然后通过代理服务器访问,然后代理服务器再将信息返回给我,代理的这个行为是发生在客户端.反向代理则刚好相

【转】NodeJS on Nginx: 使用nginx反向代理处理静态页面

最近OurJS后台已经从纯node.js迁移到了Nginx+NodeJS上来了,感觉性能提升了不少,特与大家分享. Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日.其将源代码以类BSD许可证的形式发布,因它的稳定性.丰富的功能集.示例配置文件和低系统

使用Nodejs进行反向代理

在实际工程开发中,会有前后端分离的需求. 为了平滑的完成前端请求到后端各个独立服务,需要一个中间件实现请求转发的功能,利用Nginx可以实现,在这里,使用nodejs实现一个反向代理服务器. 实际前端项目背景是node+express做前端路由,提供页面的基础渲染和请求转发. 后端使用java springboot开发多个微服务(这里没有使用spring cloud Eureka 做服务管理与API协调),每个服务的IP一致,端口不一致. 实验环境:nodejs+express端口是3001,启

【NodeJs】Linux安装NodeJs并配合Nginx实现反向代理

Linux安装NodeJs并配合Nginx实现反向代理 NodeJs 是什么 Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V8引 擎执行Javascript的速度非常快,性能非常好. Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好. 本地安装(OS X) 版本选择 V4.4.4,长期支持版本,成熟可靠 V6.2.0 稳定版本,最新特性 这里我还是倾向于使用最新的版本~ 下载安装包

LInux中Nginx+nodejs 反向代理

一台服务器架设多个 nodejs 网站的拓扑结构 Nginx 的安装 1.安装 nginx 源 sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 2.查看 Nginx 源是否配置成功 通过 yum search nginx 看看是否已经添加源成功.如果成功则执行下列命令安装 Nginx. 或者 npm info nginx 也可以看看 n

IIS 下 部署nodejs 使用反向代理

目标服务器:targetServer 配置反向代理的服务器:reveseProxServer iis应该是iis7及以上版本,才可以. 1.确定最终访问的网址:比如www.baidu.com  .www.jb51.net等等. 当然你也可以自己在targetServer部署自己的程序,在此为了示范,我在targetServer上部署了2个,用的8088端口,程序分别是: http://targetServer:8088/Auditsys/Default.htm http://targetServ