Apache的虚拟主机是啥? 您所在的位置:网站首页 apache默认网站根目录是什么意思啊 Apache的虚拟主机是啥?

Apache的虚拟主机是啥?

2024-07-16 22:40| 来源: 网络整理| 查看: 265

文章目录 一:虚拟web主机概述1.1 什么是虚拟web 主机1.2 虚拟主机的分类 二 : 构建基于域名的虚拟主机2.1 为虚拟主机 提供域名解析2.2 为虚拟住进准备网页文档2.3 配置虚拟主机2.4 设置访问控制2.5 加载独立的配置文件2.6 重启服务,并使用客户端访问2.7 配置文件Directory 目录下的配置说明2.7.1访问控制项 options 指令:2.7.2AllowOverride 指令2.7.3地址限制策略 三: 构建基于ip 的虚拟主机3.1 配置额外的一张网卡(添加网卡,或者设置虚拟网卡)3.3 设置主配置文件监听地址 四 配置基于端口的虚拟主机4.1 修改虚拟主机配置文件4.2修改主配置 文件监听项4.4 客户端访问

一:虚拟web主机概述 1.1 什么是虚拟web 主机

虚拟web 主机指的是在同一台服务器中运行多个web 站点,其中每一个站点实际上并不独立占用整个服务器,因此被称为“虚拟” web 主机。通过虚拟web 主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本。

1.2 虚拟主机的分类

使用httpd 服务可以非常方便地构建虚拟主机服务器。值需要运行一个httpd 服务,就能够同时支撑大量的 web 站点。httpd服务支持的虚拟主机类型有

基于域名:为每个虚拟主机使用不同的域名,但是其对应的IP 地址是相同的。例如,www.mynet.com 和 www.benet.com 对应的地址都是 192.168.23.13. 这是使用最普遍的虚拟web 主机类型

基于ip地址:为每个虚拟主机使用不同的域名,且各自对应的IP地址也不相同。这种方式需要服务器配置读个网络接口,因此使用的不是非常广泛

基于端口:这种方式并不使用域名,IP地址来区分不同的站点内容,而是使用了不同的TCP 端口号。因此,用户在浏览不同的虚拟站点的时候,需要同时制定端口号才能访问

二 : 构建基于域名的虚拟主机 2.1 为虚拟主机 提供域名解析

方法一:部署DNS 域名解析服务器来提供域名解析服务

(配置DNS方法请见DNS 章)

方法二:在/etc/hosts文件中临时表配置域名和IP地址的映射关系

echo "192.168.100.254 www.mynet.com" >> /etc/hosts echo "1921.168.100.254 www.benet.com" >> /etc/hosts 2.2 为虚拟住进准备网页文档 cd /usr/local/httpd/htdocs/ ​ mkdir mynet echo "www.mynet.com" > mynet/index.html mkdir benet echo "www.benet.com" > benet/index.html

#注:源码编译安装的apache网站根目录默认是安装目录下的htdos目录 #使用yum或者rpm从下载的apache网站根目录默认在/var/www/html目录

2.3 配置虚拟主机 vim /usr/local/httpd/conf/extra/httpd-vhosts.conf #源码编译安装的虚拟主机配置文件 #如果是yum 下载的,可以在主配置件/etc/httpd/conf/httpd.conf 里面添加,也可以在 /etc/httpd/conf.d/ 目下,自己创建以 .conf 结尾的文件 ​ #配置文件末尾,将两个虚拟主机例子全部注释 ​ # ServerAdmin [email protected] DocumentRoot "/usr/local/httpd/htdocs/mynet" #该网站所有网页存放在这个目录 ServerName www.mynet.com #ServerAlias www.dummy-host.example.com ErrorLog "logs/mynet.com-error-log" #这里是相对路径,从apache的工作目录开始,/usr/local/httpd 开始 CustomLog "logs/mynet.com-access-log" common ​ ​ # ServerAdmin [email protected] DocumentRoot "/usr/local/httpd/htdocs/benet" ServerName www.benet.com #ServerAlias www.dummy-host.example.com ErrorLog "logs/benet.com-error-log" CustomLog "logs/benet.com-access-log" common 2.4 设置访问控制 vim /usr/local/httpd/conf/extra/httpd-vhosts.conf Options None #不是使用任何服务器特性 AllowOverride None #不允许重写配置 Require all granted #允许所有 ​ ​ 主配置文件里,默认是拒绝所有,先注释 vim /usr/local/httpd/conf/httpd.conf # #表示apache 网站根目录,也就是/usr/local/httpd/htdocs # AllowOverride none # Require all denied #拒绝所有 # 2.5 加载独立的配置文件 vim /usr/local/httpd/conf/httpd.conf Include conf/extra/httpd-vhosts.conf #打开这行注释。

大致在484 行 ​ #yum 安装的httpd 服务,最后一行已经默认打开

2.6 重启服务,并使用客户端访问 #服务端检查语法,重启服务 apachectl -t systemctl restart httpd ​ #客户端将域名和ip映射写入到/etc/hosts 文件中,然后使用浏览器访问 echo "192.168.100.254 www.mynet.com" >> /etc/hosts echo "192.168.100.254 www.benet.com" >> /etc/hosts ​ curl http://www.mynet.com curl http://www.benet.com 2.7 配置文件Directory 目录下的配置说明 2.7.1访问控制项 options 指令:

options 指令的主要作用是控制特定目录将启用哪些服务器特性。可以在Apache 服务配置文件的虚拟主机配置(Directory)以及 .htaccess 文件使用

Options 指令常用选项

None : 表示不启用任何的服务器特性

FollowSymLinks: 服务器允许在此目录中使用符号链接(软连接)

mkdir /data echo "hello" > /data/hello.html mkdir /usr/local/httpd/htdocs/hello ln -s /data/hello.html /usr/local/httpd/htdocs/hello/index.html #网站首页为软连接文件 ​ vim /usr/local/httpd/conf/extra/httpd-vhosts.conf #配置虚拟主机 DocumentRoot "/usr/local/httpd/htdocs/hello" ServerName www.hello.com ErrorLog "logs/hello.com-error-log" CustomLog "logs/hello.com-access-log" common Options FollowSymLinks #设置允许使用符号链接 AllowOverride None Require all granted ​ ​ systemctl restart httpd echo "192.168.100.254 www.hello.com" >> /etc/hosts

Indexes:如果输入的网址对应服务器上的一个文件目录,而此目录中又没有Apache配置文件中的DirectorIndex 指令指定的文件(如 DirectoryIndex index.html index.php),则列出该目录下的所有文件.

#将 /usr/local/httpd/htdocs 目录下的首页文件,如index.html,index.php 文件都删除 ​ vim /usr/local/httpd/conf/extra/httpd-vhosts.conf #将 /usr/local/httpd/conf/extra/httpd-vhosts.conf 所有的虚拟主机都注释 Options Indexes #使用Indexes 选项 AllowOverride None Require all granted ​ systemctl restart httpd 浏览器访问 http://192.168.100.254

MultiViews : 如果客户对岸请求的路径可能对应多种类型的文件,name服务器将根据客户端请求的具体情况自动选择一个最匹配客户端要求的文件。

正常说,如果我们访问http://192.168.100.254/file/abc ,则会给我们显示 网站根目录/file/abc目录下的网页文件。如果file目录下没有abc 子目录,则报错。但是当开启本MultiViews 项后,如果file 目录下没有abc子目录,则会尝试在file目录下查找 abc.* 文件,然后根据用户请求的具体情况返回abc.jpg或者 abc.html

cd /usr/local/httpd/htdocs/ mkdir file echo "abc" > file/abc.html #在file目录下创建abc.html目录 ​ vim /usr/local/httpd/conf/extra/httpd-vhosts.conf Options None #不开启MultiViews 项 AllowOverride None Require all granted ​ systemctl restart httpd ​ firefox http://192.168.100.254/file/abc vim /usr/local/httpd/conf/httpd.conf LoadModule negotiation_module modules/mod_negotiation.so #开启 negotiation_module 模块 ​ vim /usr/local/httpd/conf/extra/httpd-vhosts.conf Options MultiViews #使用MultiViews项 AllowOverride None Require all granted ​ systemctl restart httpd firefox http://192.168.100.254file/abc

All : 表示出MultiViews 之外的所有特性,这也是options的默认设置

2.7.2AllowOverride 指令

.htaccess(分布式隐含配置文件): 提供了针对每个目录改变配置的方法,即在一个包含特定指令的文件,其中的指定作用于此目录及其所有的子目录。

当 AllowOverride 设置成None时,相应的配置目录下的 .htaccess 文件时不被读取的,即无法生效。

当AllowOverride 设置成All 时,每一次请求访问相应的目录下的文件时,都会读取 .htaccess 文件的配置。意味着源Apache指令会被 .htaccess 文件中的指令重写。

从性能和安全性考虑,一般都尽可能避免是使用 .htaccess 文件,任何希望放在.htaccess 文件中的配置,都可以放在主配置(httpd.conf)的 段中,而且高效。因此AllowOverride属性一般都配置成None。

2.7.3地址限制策略

Require all granted : 允许所有主机访问 Require all denied : 拒绝所有主机访问

Require local : 仅允许本地主机访问 Require [not] host : 允许或者拒绝 指定主机或者域名访问

Require [not] ip : 允许或者拒绝指定ip 地址网络访问

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf Options None AllowOverride None Require all denied #拒绝所有连接 ​ firefox http://192.168.100.254 vim /usr/local/httpd/conf/extra/httpd-vhosts.conf ​ Options None AllowOverride None Require ip 192.168.100.254 192.168.100.130 #仅允许 192.168.23.13和192.168.23.2访问 ​ systemctl restart httpd firefox http://192.168.100.254 三: 构建基于ip 的虚拟主机 3.1 配置额外的一张网卡(添加网卡,或者设置虚拟网卡)

ifconfig ens33:0 192.168.100.130 netmask 255.255.255.0 #设置临时虚拟网卡 ens33:0 192.168.100.130/24 ifconfig

3.2 配置虚拟主机配置

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf VirtualHost 192.168.100.254:80> #设置ip地址192.168.100.254,80端口 DocumentRoot "/usr/local/httpd/htdocs/mynet" ServerName www.mynet.com ErrorLog "logs/mynet.com-error-log" CustomLog "logs/mynet.com-access-log" common ​ ​ #设置网站地址192.168.100.130,端口80 DocumentRoot "/usr/local/httpd/htdocs/benet" ServerName www.benet.com ErrorLog "logs/benet.com-error-log" CustomLog "logs/benet.com-access-log" common ​ Options None AllowOverride None Require all granted 3.3 设置主配置文件监听地址 vim /usr/local/httpd/conf/httpd.conf Listen 192.168.100.254:80 Listen 192.168.100.130:80

3.4 重启服务,查看端口

systemctl restart httpd netstat -natp | grep 80

3.5 客户端访问 curl http://192.168.100.254 curl http://192.168.100.130

四 配置基于端口的虚拟主机 4.1 修改虚拟主机配置文件 #mynet 使用 192.168.100.254:80 端口 DocumentRoot "/usr/local/httpd/htdocs/mynet" ServerName www.mynet.com ErrorLog "logs/mynet.com-error-log" CustomLog "logs/mynet.com-access-log" common ​ #benet使用 192.168.100.254:8080端口 DocumentRoot "/usr/local/httpd/htdocs/benet" ServerName www.benet.com ErrorLog "logs/benet.com-error-log" CustomLog "logs/benet.com-access-log" common ​ Options None AllowOverride None Require all granted 4.2修改主配置 文件监听项 vim /usr/local/httpd/conf/httpd.conf Listen 192.168.100.254:80 Listen 192.168.100.130:8080

4.3 重启服务,查看端口

systemctl restart httpd netstat -natp | grep 80

4.4 客户端访问 curl http://192.168.100.254:80 curl http://192.168.100.130:8080


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有