您的位置:首页 > 运维架构 > 反向代理

从零部署我的node应用(nginx反向代理到node服务器)

2018-06-24 04:53 633 查看

前期工具准备

1.首先买服务器和域名。

我使用的是腾讯学生云,https://cloud.tencent.com/act/campus,不是广告,当然你也可以选阿里云。

腾讯学生云买的时候+8元可以获得.cn域名一年,不过域名可以买可不买,我是买了的,毕竟不想让自己的网站通过ip访问。

我买的服务器是Centos7.4的,当然这个无所谓,你可以到时候重装系统,还可以重新选择镜像和设置密码呢,就在你的服务器右边那《更多》可以选择

 

2.域名实名认证和解析。

如果买了域名的话则需要实名认证才可以使用,另外,备案对于我们来说没有必要,不用选择。

不过备案的一个好处就是可以使用二级域名。

域名随后还需要解析:https://cloud.tencent.com/document/product/302/3446

 

3.下载安装putty和WinSCP

putty用来连接远程主机。下载地址

WinSCP用来上传部署文件。下载地址

 

4.使用putty连接远程主机

连接名字随便取,比如可以取为myServer, ip为远程主机的公网ip

连接时候需要输入账户名和密码,输完后就进入了linux控制界面了

 

5.准备好你要部署的项目

在这里我要部署一个即时在线聊天系统,git地址为:https://github.com/14glwu/NoChat

喜欢的话,麻烦给我点star! star!star!

 

nginx+node环境搭建

可以参考这个:腾讯云从零部署ndoejs应用

1.安装nginx服务器

ubunto服务器一般是用apt-get命令安装,而centos一般是用yum

yum install nginx

安装后可以使用 nginx -v 查看是否安装成功,有版本号就代表安装成功。

启动nginx服务器

nginx

 

 

2.安装node

node下载,可根据需要下载不同版本号

wget https://nodejs.org/dist/v10.4.1/node-v10.4.1-linux-x64.tar.xz

解压

tar -xvf node-v10.4.1-linux-x64.tar.xz

进入解压好的文件夹

cd node-v10.4.1-linux-x64

拷贝安装(相当于添加环境变量,为了能运行node命令)

cp -r bin include lib share /usr/local/

安装后可以使用 node -v 查看是否安装成功,有版本号就代表安装成功。

 

3.使用WinSCP上传要部署的应用

当然你也可以选择yum install git,再用git clone你的项目到服务器上然后安装运行。

这里我使用了比较简单的 WinSCP。登录过程比较简单,因为前面putty已经登录过了,有远程主机的ip信息,

所以WinSCP只需要输入账号和密码就能登录了,登录成功后如下图

在这里我已经新建了我的项目目录NoChat,左边是我们的本地目录。

右边进入远程目录的NoChat文件夹下,左边进入本地目录下要部署的项目文件夹下

然后把左边要上传的文件(一般除去node_moduls等目录)选中后直接拖拽到右边远程目录,即可完成上传。

(右边有node_modules是因为我已经安装过了)

 

3.使用putty安装应用

ll查看目录文件,cd命令进入到对应项目文件夹下,然后npm install安装应用

 

4.安装pm2模块

pm2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。

我们稍后要用pm2去启动我们的node应用,毕竟pm2可以保证我们的应用不停止。想了解更多pm2的可以网上搜索下。

安装pm2

npm install -g pm2

启动应用

pm2 start server.js --name nochat

当然你想停止就pm2 stop 应用名

具体pm2命令可以看这里

启动好后,可以查看我们刚刚部署好了的node应用:http://ericwu.cn:8090/

 

 

nginx反向代理

前面我们的应用居然还要访问端口号,我们想要的是如果访问http://ericwu.cn/nochat就能访问到我们的应用就好了。

很简单。通过nginx反向代理就能做到。当然nginx服务器还有很多优秀之处:静态资源、负载均衡等。

我之所以使用nginx反向代理,就是我想把不同项目部署在不同端口下,再通过nginx反向代理去分发请求到不同项目的node或者apache服务器

具体可以看这里

这时候就又要用到了WinSCP(图形界面真香)

 

nginx安装完成之后,配置文件一般在这些目录中/usr/local/nginx/conf, /etc/nginx, or /usr/local/etc/nginx.

我的配置文件在/etc/nginx目录下,打开nginx.conf,在http下增加要代理的服务器

upstream nochat {
server 你的远程主机ip:8090;
}

在这里我的端口号是8090,ip也就是远程主机的公网ip

然后在server下修改location,从反向代理到对应的服务器上

location / {
proxy_pass http://nochat/;#一定要配置,不然找不到node服务器下的静态资源
}

location /nochat {
proxy_pass http://nochat/;
port_in_redirect   on;
proxy_redirect     off;
proxy_set_header   Host             $host;
proxy_set_header   X-Real-IP        $remote_addr;
proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
}

 

至此,我们的反向代理就配置好了,访问新的网址试试:http://ericwu.cn/nochat

不过一开始进去的时候,连接不上,需要等会儿才能连上。

 

 我找了下原因是因为我的应用使用了websocket协议。我的nginx版本是1.12的,而nginx 1.3的才能支持websocket的反向代理,哎,真坑。

不过也不知道为什么我的又能连上,也许有大牛可以解答吧。

另外还是希望您能给我的github一点star:https://github.com/14glwu/NoChat

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: