美文网首页Nginx高端成长之路Node.js专题Node.js
Nginx反向代理:实现node.js多虚拟主机

Nginx反向代理:实现node.js多虚拟主机

作者: CocoaYog | 来源:发表于2017-08-06 20:51 被阅读204次

在node项目开发中,无论是开发测试的需要,或者从运营成本考虑,都避免不了在同一个服务器上运行多个node项目。而且,我们又想通过不同的域名,访问不同的node程序。这种情况下,我们就需要使用反向代理,来实现端口的分发,实现我们的需求。

node服务器实现反向代理的方法,以我所了解的通常有两种:

  1. 借助 node-http-proxy 包,创建一个进行端口转发的node项目,实现反向代理;
  2. 使用Nginx实现反向代理

第一个中方法我也就不多说了,这里有个博客推荐给大家 :《用 nodejs 做反向代理服务器》,从事node开发的朋友应该都能看明白。

在这里我主要介绍一下,如何使用Nginx实现反向代理。

我之所以选择Nginx作方向代理,是因为接手的项目是使用的Nginx,另一个原因是因为,之前,我懂的如何使用Nginx给不同的域名配置https证书,也就没想着再使用nodejs做方向代理。如果有人问,这两种方法,哪个性能更好一些?抱歉,本人也没有做过测试。

使用场景

  1. 需要在同一个服务器上运行多个node项目;

  2. 每个node项目使用不同的端口;

  3. 需要通过不同的域名或者子域名,访问不同的node服务

Nginx安装

Nginx的安装方法,网上有不少的教程,我就不在这里赘述了,推荐一个博客:《centos 6.5下编译安装、配置高性能服务器Nginx(安装笔记)》

Nginx反向代理

  1. 安装Nginx后,找到Nginx的配置文件: nginx.conf
    (centOS默认安装情况下,一般在以下路径:/usr/local/nginx/conf/nginx.conf)
nginx.conf
  1. 在nginx.conf文件所在目录新建一个 vhost文件夹。(用来统一存放每个虚拟主机的配置文件,方便以后管理,其他名字也可以)。
vhost文件夹
  1. 进入vhost文件夹,新建 demo_host.conf 文件。(同样文件名不做要求,但是建议以域名或者子域名作为文件名,方便以后c修改)
Jietu20170806-194504.png
  1. 在demo_host.conf文件中,写入以下内容:
upstream yourhost {
  server 127.0.0.1:3000;
  keepalive 64;
}
server {

    listen 80;
    server_name yourhostname.com;
    access_log /var/log/nginx/demohost.log;
    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://yourhost;

    }

}

下面配图解释一下:

Jietu20170806-201802.png

如果你需要给这个域名配置https证书,只需要做出如下改变:

Jietu20170806-202739.png
  1. 最后在nginx.conf文件中添加这样如下代码就可以了
include /usr/local/nginx/conf/vhost/*.conf;

导入位置如下:

Jietu20170806-203420.png
  1. 完成。重启nginx后,反向代理就生效了。

后记

如果你想创建多个虚拟主机,以后只需要在vhost文件夹中添加新的.conf文件就可以了


如果您有任何问题,请发邮件至 cocoayog@163.com,我将尽快回复。

相关文章

  • nginx

    nginx的配置、虚拟主机、负载均衡和反向代理一nginx的配置、虚拟主机、负载均衡和反向代理二nginx的配置、...

  • Nginx反向代理:实现node.js多虚拟主机

    在node项目开发中,无论是开发测试的需要,或者从运营成本考虑,都避免不了在同一个服务器上运行多个node项目。而...

  • ngnix反向代理服务和负载均衡

    编辑nginx.conf nginx实现负载均衡 反向代理

  • nginx实现tcp反向代理

    tcp反向代理默认不在nginx的模块里,想要nginx实现反向代理tcp请求,需要自己编译tcp模块到nginx...

  • nginx反向代理

    什么是反向代理 如何实现反向代理 准备工作以及安装nginx 配置nginx nginx的初始配置文件去掉注释后的...

  • nginx配置代理

    nginx 反向代理服务器,用来代理访问路径的跳转 虚拟主机的配置 访问路径: http://dev.admin....

  • 18. Tomcat - 结合反向代理实现Tomcat部署

    4. 结合反向代理实现Tomcat部署 4.1 常见部署方式介绍 4.2 利用nginx反向代理实现全部转发置指定...

  • nginx 在请求头request中增加header参数

    有两种方式可以实现这一操作: 1:nginx反向代理(需要两个nginx服务) 在nginx反向代理服务器通过使用...

  • nginx做代理上网

    nginx不仅可以来做反向代理,也可以用来做正向代理(透明代理,代理上网),nginx反向代理看这里nginx反向...

  • 【docker】 代理:nginx

    Nginx 创建容器: 反向代理   本地域名实现反向代理:www.mixm.com[http://www.mix...

网友评论

本文标题:Nginx反向代理:实现node.js多虚拟主机

本文链接:https://www.haomeiwen.com/subject/tcsnlxtx.html