Nginx反向代理:以node项目为例实现多虚拟主机,对JavaSpring项目适用
在node项目开发中,无论是开发测试的需要,或者从运营成本考虑,都避免不了在同一个服务器上运行多个node项目。而且,我们又想通过不同的域名,访问不同的node程序。这种情况下,我们就需要使用反向代理,来实现端口的分发,实现我们的需求。
在这里我主要介绍一下,如何使用Nginx实现反向代理。
我之所以选择Nginx作反向代理,是因为接手的项目是使用的Nginx,另一个原因是因为之前,我懂的如何使用Nginx给不同的域名配置https证书,也就没想着再使用nodejs做方向代理。如果有人问,这两种方法,哪个性能更好一些?抱歉,本人也没有做过测试。
Nginx反向代理,基本和后台语言或框架无关,最近已证实对Java Spring 项目同样适用
使用场景
- 需要在同一个服务器上运行多个web server项目;
- 每个项目使用不同的端口;
- 需要通过不同的域名或者子域名,访问不同的web server服务
Nginx安装
Nginx的安装方法,网上有不少的教程,我就不在这里赘述了,推荐一个博客:《centos 6.5下编译安装、配置高性能服务器Nginx(安装笔记)》
Nginx反向代理
- 安装Nginx后,找到Nginx的配置文件: nginx.conf
(centOS默认安装情况下,一般在以下路径:/usr/local/nginx/conf/nginx.conf)
- 在nginx.conf文件所在目录新建一个 vhost文件夹。(用来统一存放每个虚拟主机的配置文件,方便以后管理,其他名字也可以)。
- 进入vhost文件夹,新建 demo_host.conf 文件。(同样文件名不做要求,但是建议以域名或者子域名作为文件名,方便以后修改)
- 在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证书,只需要做出如下改变:
- 最后在nginx.conf文件中添加这样如下代码就可以了
include /usr/local/nginx/conf/vhost/*.conf;
导入位置如下:
- 完成。重启nginx后,反向代理就生效了。
后记
如果你想创建多个虚拟主机,以后只需要在vhost文件夹中添加新的.conf文件就可以了
相关推荐
某些公司会墙特定网站,如果你有一个可访问的域名和服务器,就可以通过nginx反向代理来来解决这些问题。比如现在我们用mirror.example.com镜像www.baidu.com,以下是详细操作。