最近用 Node 写的两个小项目都需要上线,项目跑在阿里云上,给了不同的端口,平时在各自的端口上,相安无事,但是要挂在微信公号上就需要域名,IP只有一个,两个域名势必要搭起来,我资历尚浅,肯定劝不动他俩,不看僧面看佛面,只好请来神器 Nginx 主持公道。这里做个笔记,欢迎补充指正。

Domains-2-Servers ?

多个 Domain 需要对应多个 Node 服务,然而只有一个 IP,这还怎么谈?矛盾尖锐到无法解决的时候就需要中间人介入,和气生财嘛,Nginx 在中间人这个位置做的得心应手,擅长的领域有以下几点

  • 页面服务器
  • 负载均衡
  • web 缓存加速
  • 反向代理

这起纠纷需要用到反向代理根据请求的 URL 将请求转到不同的服务器,以达到多个服务和谐共处的环境

Nginx 安装 & 常用命令

安装

我比较懒,用 yum 安装,快捷方便

常用命令

  • nginx -s stop 快速关闭
  • nginx -s quit 优雅地关闭
  • nginx -s reopen 重新打开日志
  • nginx -s reload 平滑重启
  • nginx -t 启动前测试

如果用包管理器进行的安装,也可以通过 service 来操作 Nginx

  • service nginx start
  • service nginx stop
  • service nginx restart
  • service nginx reload

Nginx 配置文件

1
2
系统: CentOS 7  
Nginx: 1.10.1

检查 nginx.conf

进入 /etc/nginx/ 路径下,路径下的 nginx.conf 是 Nginx 的配置文件,还有 /conf.d 文件夹存放的是 Server 的设置(:这里的 /conf.d 在较早的版本里是 /sites-available)

1
2
3
4
5
//nginx.conf 文件末尾对 /conf.d 中配置文件的应用,如果这一行被注释了,请把注释去除
include /etc/nginx/conf.d/*.conf

//如果是 /sites-available
include /etc/nginx/sites-available/*.conf

新建 Server 配置文件

配置文件确认没有问题了,现在需要在 /conf.d 目录下配置服务器和对应的域名,我这里新建两个文件 lushi.confmark.conf (文件名随意,注意是 .conf 文件)以对应我需要配置的两个域名,分别的配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//lushi.conf
server {
listen 80;
server_name lushi.lijundong.com;
access_log /var/log/nginx/domain1.access.log;
location / {
proxy_pass //127.0.0.1:3000/;
}
}

//mark.conf
server {
listen 80;
server_name mark.lijundong.com;
access_log /var/log/nginx/domain1.access.log;
location / {
proxy_pass //127.0.0.1:3100/;
}
}

重载配置文件

之前介绍的命令在这里就可以用了,nginx -s reload 重载配置文件,现在访问配置好的两个域名,又回到了相安无事的年代

参考: