Nginx反向代理:以node项目为例实现多虚拟主机,对JavaSpring项目适用

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

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

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

Nginx反向代理,基本和后台语言或框架无关,最近已证明对Java Spring 项目一样适用shell

使用场景

  1. 须要在同一个服务器上运行多个web server项目;
  2. 每一个项目使用不一样的端口;
  3. 须要经过不一样的域名或者子域名,访问不一样的web server服务

Nginx安装

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

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 文件。(一样文件名不作要求,可是建议以域名或者子域名做为文件名,方便之后修改)

demo_host.conf

  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;

    }

}

下面配图解释一下:框架

图片描述

特别强调 :多个.conf中的upstream yourhost 函数不能重名,不然,Nginx会报警告,而且只有一个.conf生效函数

若是你须要给这个域名配置https证书,只须要作出以下改变:性能

图片描述

  1. 最后在nginx.conf文件中添加这样以下代码就能够了
include /usr/local/nginx/conf/vhost/*.conf;

导入位置以下:测试

图片描述

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

后记

若是你想建立多个虚拟主机,之后只须要在vhost文件夹中添加新的.conf文件就能够了

相关文章
相关标签/搜索