先讲一下场景,手里有两个域名,一台云服务器,一堆垃圾项目。

现在想要的是,访问域名 A,能够访问的是 3000 端口下的应用 A;访问域名 B,访问的是 3001 端口下的应用 B;

1. 安装 nginx

参考一下百度就好,不赘述了。

2. 写配置文件

配置文件在nginx/nginx.conf下完成,部分使用nginx官方文档安装的同学可能会进不去目录。

nginx.conf文件中配置以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 80;
server_name domin001.com;

location / {
proxy_pass http://127.0.0.1:3000;
}
}

server {
listen 80;
server_name domin002.com;

location / {
proxy_pass http://127.0.0.1:3001;
}
}

上面的配置描述了当用户输入domin001.com进入网站是,实际由http://127.0.0.1:3000代理。同样是对于domin002.com,也是使用了对应的http://127.0.0.1:3001进行代理。

tip:需要注意的是,对于部分javascript,ruby等玩家来说,分号可能并不是必要的内容,但很不幸nginx的配置文件是有分号需求的。

3. 更新

今天早上测试了一下发现了一些问题,将配置修改为如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 80;
server_name domin001.com;

location / {
proxy_pass http://127.0.0.1:3000;
}
}

server {
listen 80;
server_name domin002.com;

location / {
proxy_pass http://127.0.0.1:3001;
}
}

与上面的区别在于以下

  • 1.添加了带 www 与不带 www 的代理
  • 2.对于server_name有个很奇怪的地方是,不带www的域名一定要写在前面,目前不太明白原理
  • 3.空格符分隔