搭建虚拟主机条件
一个web服务器软件默认情况下只能发布一个web,因为一个web分享出去需要三个条件(ip、port、domain name)
虚拟主机就是把一台物理服务器划分成多个”虚拟“的服务器,每一个虚拟主机都可以有独立的域名和独立的目录
实现虚拟主机
实验
在这我为了省时间我直接yum安装,想看源码包安装的小伙伴可以去在此查看
安装nginx
安装epel源
[root@localhost ~]# yum -y install epel-release.noarch
安装nginx
[root@localhost ~]# yum -y install nginx
启动nginx服务
[root@localhost ~]# systemctl start nginx
基于IP配置虚拟主机
查找配置文件路径
[root@localhost ~]# find / -name nginx.conf
复制配置文件到etc下,有文件直接覆盖
[root@localhost ~]# cp /usr/local/nginx/conf/nginx.conf /etc/nginx/nginx.conf
用sed把没用的字段和选项删除,这是删除以#号和空白行的删除
[root@localhost ~]# sed '/#/d' -i /etc/nginx/nginx.conf
[root@localhost ~]# sed '/^$/d' -i /etc/nginx/nginx.conf
这样看的更佳直观,接下来配置文件,并开启一个虚拟的网卡。
修改文件内容
[root@localhost ~]# vim /etc/nginx/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#从这往下是要修改的内容
server {
listen 192.168.1.56:80;
server_name localhost;
location / {
root /usr/local/nginx/html/web1; ***注意这地方要写上绝对路径
index index.html index.htm;
}
}
server {
listen 192.168.1.45:80;
server_name localhost;
location / {
root /usr/local/nginx/html/web; ***注意这地方要写上绝对路径
index index.html index.htm;
}
}
创建相对应的目录并添加内容
[root@localhost ~]# mkdir -p /usr/local/nginx/html/{web,web1}
[root@localhost ~]# echo "你好我是web" >> /usr/local/nginx/html/web/index.html
[root@localhost ~]# echo "你好我是web1" >> /usr/local/nginx/html/web1/index.html
添加虚拟ip地址
[root@localhost ~]# ifconfig ens33:1 192.168.1.45/24 up
重启nginx
[root@localhost ~]# systemctl restart nginx
知道这里我们的配置算是完成了,现在我们验证下我们的成果把。
可以在宿主机上直接使用IP访问,也可以在虚拟机上下载一个游览器软件elinks访问,验证成果。
虚拟机elinks验证
[root@localhost ~]# elinks 192.168.1.45 --dump
你好我是web
[root@localhost ~]# elinks 192.168.1.56 --dump
你好我是web1
基于端口和基于IP的程序一样,只需要把IP地址的地方修改为端口号即可。
基于域名配置信息
第一步:修改配置文件
打开配置文件修改文件,打开设置域名
[root@localhost ~]# vim /etc/nginx/nginx.conf
······
server {
listen 192.168.1.45:80;
server_name www.191992.com; ###这是域名
location / {
root /usr/local/nginx/html/web1;
index index.html index.htm;
}
}
server {
listen 192.168.1.56:80;
server_name www.191991.com; ###这是域名
location / {
root /usr/local/nginx/html/web;
index index.html index.htm;
}
}
第二部:配备主机的域名解析
[root@localhost ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.56 www.191991.com
192.168.1.45 www.191992.com
~
第三步:验证成果
[root@localhost ~]# elinks www.191992.com --dump
lslng
[root@localhost ~]# elinks www.191991.com --dump
web 1
命令 | 解析 |
---|---|
elinks | Linux中的一个游览器 |
参数 | 解析 |
–dump | 纸打印出结果 |
小结:
基于IP地址:特点是每一个网站都需要一个IP,缺点是需要多个IP,如果是公网IP每个IP都需要付费。
基于端口:特点是只需要单个IP,缺点是端口无法告诉公网用户,无法适用于公网用户。内部网络不介意这一点。
基于域名:特点一个IP可以解析多个域名,分别指向不同的文件地址。