本文记录了在 Mac OSX 下,通过 Nginx 1.15.5 来配置虚拟主机的过程。
0. 准备工作
本次模拟的是效果是,通过浏览器访问 www.shop.com 和 api.shop.com 能定位到不同的网站目录下:
- www.shop.com -> ~/Sites/home
- api.show.com -> ~/Sites/api
上面的两个域名是随便取的,为了能让它指向本地,我们需要修改 vhost
文件:1
sudo vim /private/etc/hosts
追加:1
2127.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