一、引入
我们知道,要想在一台服务器上配置多个网站,服务器有两种方法进行区分,一种是通过端口号,一种是通过域名。
若一台主机192.168.30.145
上面部署了两个网站,一个是 www.jitwxs.cn ,一个是 www.baidu.com 。
如果使用端口号区分,若想访问 www.jitwxs.cn 使用192.168.30.145:80
,访问 www.baidu.com 使用192.168.30.145:81
。这是不友好的,因为 http 默认端口为 80,用户如果忘输了网站的端口,不就进了别人的网站吗,用户体验极差。
如果使用域名进行区分,都只用访问 192.168.30.145
,nginx 内部判断用户输入的域名是 www.jitwxs.cn 还是 www.baidu.com ,无需用户关心,体验好。
二、使用端口号配置虚拟主机
说明:我的 nginx 安装目录为 /usr/nginx
打开 /usr/nginx/conf/nginx.conf
文件,我们关心的是其中的 server
节点。
一个 server
节点就是一台虚拟主机,location /
子节点中的 root
就是指该虚拟主机的文件夹。
因此我们想要使用端口号新建虚拟主机,需要:
- 拷贝一份Server节点
- 修改端口号
- 修改文件夹目录
为了方便演示,删除注释部分的代码,拷贝一份,修改端口号为81,修改文件夹目录为html_81:
保存配置文件,将 nginx 目录下的 html 文件夹复制一份保存为 html_81,并对其首页进行修改,以便测试时候能够区分:
1 | wxs@ubuntu:/usr/nginx$ sudo cp -r html/ html_81 |
分别访问 80 和 81 端口进行测试:
三、使用域名配置虚拟主机
我们知道:一个域名对应一个I P,一个 IP 可以对应多个域名。从域名到IP需要 DNS
进行解析,如果本地 host 中已经有了域名和 IP 的对应关系,那么 DNS 服务器就不回去解析。
下面让我们演示一下!
若我们当前服务器IP为 192.168.30.147
,我们为 www.jiw.com
和 www.wxs.com
这两个网站进行手动添加 host,均指向 192.168.30.147
。
修改 C:\Windows\System32\drivers\etc\host
文件,手动进行域名、IP映射。
注:如果没有权限修改,参考文章:Win10解决修改host没有权限问题(其他文件同理)
服务器启动 Nginx:
现在这两个网站都访问了 Nginx,Nginx 怎么才能区分他们呢?当然是通过域名!修改配置文件:
下面创建这两个网站的文件夹:
1 | wxs@ubuntu:/usr/nginx$ sudo cp -r html/ www.jit.com |
为了区分,将两个文件的首页打印各自的域名信息:
1 | wxs@ubuntu:/usr/nginx$ sudo vim www.jit.com/index.html |
1 | wxs@ubuntu:/usr/nginx$ sudo vim www.wxs.com/index.html |
重新启动 Nginx:
1 | wxs@ubuntu:/usr/nginx$ sudo sbin/nginx -s quit |
访问域名:
完成!
注:这里我是要模拟域名才手动修改host,如果你拥有真实域名和IP,使用DNS域名解析即可。