Nginx 配置虚拟主机

本文记录了在 Mac OSX 下,通过 Nginx 1.15.5 来配置虚拟主机的过程。

0. 准备工作

本次模拟的是效果是,通过浏览器访问 www.shop.com 和 api.shop.com 能定位到不同的网站目录下:

上面的两个域名是随便取的,为了能让它指向本地,我们需要修改 vhost 文件:

1
sudo vim /private/etc/hosts

追加:

1
2
127.0.0.1       www.shop.com
127.0.0.1 api.shop.com

1. 通过 brew 安装 nginx

通过 homebrew 安装 nginx:

1
brew install nginx

安装完成后通过 brew services start nginx 启动 nginx 服务

2. 修改 nginx 配置文件

接下来需要对 nginx 的配置文件(/usr/local/etc/nginx/nginx.conf)进行修改,打开 nginx.conf 确保下面这行配置已经启用:

1
include servers/*;

3. 添加虚拟主机配置文件

然后,在 /usr/local/etc/nginx/services 目录下,创建两个配置文件(home.conf, api.conf)用于对上面两个 host 进行配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# home.conf
server {
listen 80;
server_name www.shop.com;

location / {
root /Users/mcbird/Sites/main;
index index.html index.htm;
}
}

# api.conf
server {
listen 80;
server_name api.shop.com;

location / {
root /Users/mcbird/Sites/api;
index index.html index.htm;
}
}

4. 加载新的 nginx 配置

修改完 nginx 配置文件,并不会立即生效,接下来可以先对配置文件进行检查:

1
2
3
4
# 检查配置文件是否有语法错误
sudo nginx -t
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

检查成功后,通过 reload 信号重新加载配置文件:

1
sudo nginx -s reload

5. 完成

通过浏览器访问 www.shop.com 就会打开 /Users/mcbird/Sites/main/index.html 文件;api.shop.com 会打开 /Users/mcbird/Sites/api/index.html