apache2配置虚拟主机
监听端口:
在/etc/apache2/ports.conf
中,添加以下语句
Listen 80
# 监听80端口
Listen 8080
# 监听8080端口
# 可同时定义多条
虚拟主机:
配置文件设置
在/etc/apache2/sites-available/test.conf(假设该目录下有配置文件000-default.conf、default-ssl.conf、test.conf [自己新建的] )
中添加如下语句
<VirtualHost *:80>
# 当客户端访问本机所用的域名ip及端口满足条件,采用该虚拟主机规则;
# 作用类似于判断条件(if)的作用:基于主机名的虚拟主机
ServerName web1.com
# 当客户端访问本机所用的域名为web1.com时,采用该虚拟主机规则;
# 作用类似于判断条件(if)的作用:基于主机名的虚拟主机
ServerAdmin webmaster@localhost
# 错误页面时显示的联系方式?
DocumentRoot /var/www/web1
# 设置网站所在的目录
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
# 可同时定义多条
配置文件生效
在/etc/apache2/sites-available
中的配置文件并不会生效,只有处于
/etc/apache2/sites-enabled/
中的配置文件才会生效。可以利用a2dissite
指令和a2ensite
指令对配置文件进行生效与失效操作。(生效的原理即为,在sites-enabled/
下建立配置文件的链接;失效的原理即为,删除sites-enabled/
下的配置文件链接)
1、执行sudo a2dissite
并选择要失效的配置文件
2、执行sudo a2ensite
并选择要生效的配置文件
参考链接:
apache2官方文档 Apache2 VirtualHost的配置方法 Apache2.4配置VirtualHost
DocumentRoot、Directory与Location的区别
DocumentRoot /var/www/web1
用于在<VirtualHost *:80>中定义虚拟主机根目录的位置
<Directory /var/www/nextcloud/>
表示
用于设置目录的属性,可以独立于<VirtualHost *:80>使用,DocumentRoot的功能是Directory的真子集
<Location /private>
Order Allow,Deny
Deny from all
</Location>
Location与上两者均不同之处在于,其后面接的是网络请求的位置。如:
http://ip或domain/private
只有请求满足该格式,才会被执行。
而上面定义的location将拒绝一切http://ip或domain/private
格式的请求