一、概念
虚拟主机,就是把一台物理服务器划分成多个 “虚拟” 的服务器,这样我们的一台物理服务器就可以当做多个服务器来使用,从而可以配置多个网站。Nginx 提供虚拟主机的功能,就是为了让我们不需要安装多个 Nginx,就可以运行多个域名不同的网站。
Nginx 下,一个 server 标签就是一个虚拟主机。nginx 的虚拟主机就是通过 nginx.conf 中 server 节点指定的,想要设置多个虚拟主机,配置多个server节点即可。
例如:www.meituan.com 切换城市,可以看到不同的城市地址不一样(二级域名)
比如一个公司有多个二级域名,没有必要为每个二级域名都提供一台 Nginx 服务器,就可以使用虚拟主机技术,在一台 Nginx 服务器上,模拟多个虚拟服务器。
二、配置虚拟主机方式
1. 基于端口的虚拟主机
基于端口的虚拟主机配置,使用端口来区分;
浏览器使用 同一个域名 + 端口 或 同一个ip地址 + 端口访问;
server {
listen 8080;
server_name www.myweb.com;
location /myweb {
proxy_pass http://www.myweb.com;
}
}
server {
listen 9090;
server_name www.p2p.com;
location /p2p {
proxy_pass http://www.p2p.com;
}
}
2. 基于域名的虚拟主机
基于域名的虚拟主机是最常见的一种虚拟主机
server {
listen 80;
server_name www.myweb.com;
location /myweb {
proxy_pass http://www. myweb.com;
}
}
server {
listen 80;
server_name www.p2p.com;
location /myweb {
proxy_pass http://www.p2p.com;
}
}
需要修改一下本地的hosts文件,文件位置:C:\Windows\System32\drivers\etc\hosts
在hosts文件配置:
192.168.160.133 www.myweb.com
192.168.160.133 www.p2p.com
前面是 Linux 的 IP,后面是你自定义的域名。
三、案例
模拟城市站点网站,示例图如下
配置 3 个Tomcat,每个 Tomcat 一个站点项目
● 由于我们之前已经配置好了两个Tomcat,再配置一个即可
● 拷贝一个新的 Tomcat 9300
● 修改 Tomcat 9300 的端口号 (修改 server.xml 文件)
● 清空三个 Tomcat 的 webapps/ROOT 目录
● 使用 Xftp 将三个 war 包上传到三个 tomcat 的 ROOT 目录
● beijing.war上传到 tomcat 9100 服务器上
● nanjing.war 上传到 tomcat 9200 服务器上
● tianjin.war上传到 tomcat 9300 服务器上
● 在 tomcat 启动前,使用 unzip 命令,直接解压三个 war 包,否则 tomcat 启动的时候,自动解压,还是有一个上下文目录的。
● 在 tomcat 9200 和 9300上执行相同的操作
● 启动三个tomcat
● 在浏览器中直接访问 tomcat 进行测试
在 nginx.conf 中配置3个 Nginx 虚拟主机
● 方式一
在 nginx.conf 文件添加三个 server 节点,用于配置三个虚拟主机
server {
listen 80;
server_name beijing.myweb.com;
location / {
proxy_pass http://beijing.myweb.com;
}
}
server {
listen 80;
server_name nanjing.myweb.com;
location / {
proxy_pass http://nanjing.myweb.com;
}
}
server {
listen 80;
server_name tianjin.myweb.com;
location / {
proxy_pass http://tianjin.myweb.com;
}
}
● 方式二:通过单独的配置文件配置虚拟主机
通过include的方式引入虚拟主机配置
include /usr/local/nginx/conf/vhost/vhost.conf;
将虚拟目录的配置文件加入到”http {}”
部分的末尾,与其他server并列。
文件是隔开的,配置更清晰,主文件没有那么多是server。
在nginx.conf中配置每个虚拟主机请求转发所对应的后端服务器
负载均衡,可以配置多个服务器
upstream beijing.myweb.com {
server 127.0.0.1:9100;
}
upstream nanjing.myweb.com {
server 127.0.0.1:9200;
}
upstream tianjin.myweb.com {
server 127.0.0.1:9300;
}
修改hosts文件,让 Linux 的 ip 指向到三个站点的域名
C:\Windows\System32\drivers\etc\hosts
192.168.160.133 beijing.myweb.com
192.168.160.133 nanjing.myweb.com
192.168.160.133 tianjin.myweb.com
重启nginx,通过浏览器访问nginx进行测试