一台服务器要是只能部署一个网站,那就难免有些浪费了。Apache服务的虚拟主机功能可以基于ip地址
、主机域名
、端口号
来访问网站,这样就可以实现在一台服务器上部署多个网站了。
不同ip地址
、主机域名
、端口号
,实现提供多个网站同时为外部提供访问服务的技术。【用户请求的资源不同,最终获取的网页内容也不同】
基于IP地址
访问网站
使用nmtui为虚拟机配置3个ip地址,分别为:192.168.10.10
192.168.10.20
192.168.10.30
/home/www/html
【若不修改网站数据目录,可以省略该步骤】/home/www/html
下创建3个子目录,分别存放3个网站的数据。并分别写入各自的内容到默认首页index.html
httpd服务
的配置文件,以支持虚拟主机功能。修改完后要重启httpd服务。
AllowOverride
【配置成不允许apache
读取.htaccess
文件的内容】
通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里。但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置。从安全性考虑,根目录的AllowOverride属性一般都配置成“None”不允许任何Override(优先级)。
Require
【访问资源限制,谁能访问资源】
Require all granted
允许所有请求访问资源
Require all denied
拒绝所有请求访问资源
# 配置文件/etc/httpd/conf/httpd.conf
# 从113行开始写入以下内容
【指定ip的虚拟主机】
DocumentRoot "/home/www/html/10" 【网站数据目录】
ServerName "www.abong.com" 【网站服务器的域名】
【网站数据目录的信息】
AllowOverride None
Require all granted
DocumentRoot "/home/www/html/20"
ServerName "bbs.abong.com"
AllowOverride None
Require all granted
DocumentRoot "/home/www/html/30"
ServerName "tech.abong.com"
AllowOverride None
Require all granted
打开firefox,输入网址:192.168.10.10
,显示如下:
看过我其他博客的人,估计可以看出,肯定又是selinux安全上下文没有配置好。
为网站数据目录/home/www/html
及其目录下的文件添加selinux安全上下文
,以支持httpd服务。
查询下网站数据目录的selinux安全上下文,可以看到不是httpd服务所支持的,要修改。
从下图可以看到已修改好了
再次打开网站,可以看到已经能够正常显示输入的内容了。
至此,我们终于可以通过不同的ip地址去访问到不同的网站了。
主机域名
访问网站
如果觉得ip地址太难记,或者ip地址不够用,可以考虑使用主机域名访问网站。可以通过不同的主机域名,去定位同一个ip地址来访问网站。在这里选取ip地址为:192.168.10.10
/etc/hosts
】www.abong.com
bbs.abong.com
tech.abong.com
/home/www/html
,并创建3个子目录分别存放3个网站的数据。过程可参考"基于IP地址
访问网站",这里只给我配置结果并调整好selinux安全上下文的问题。配置好后重启httpd服务。httpd服务
的配置文件,以支持虚拟主机功能。修改完后要重启httpd服务。
# 配置文件/etc/httpd/conf/httpd.conf
# 从113行开始写入以下内容
DocumentRoot "/home/www/html/www"
ServerName "www.abong.com"
AllowOverride None
Require all granted
DocumentRoot "/home/www/html/bbs"
ServerName "bbs.abong.com"
AllowOverride None
Require all granted
DocumentRoot "/home/www/html/tech"
ServerName "tech.abong.com"
AllowOverride None
Require all granted
打开firefox,验证结果。IP地址:端口号
访问网站
若是ip地址不够用
,但是又不想使用主机域名
,则可以使用ip地址:端口号
的方式来访问网站。
ip地址和端口号
IP地址:192.168.10.10
端口号:8111
和8222
在网站数据目录/home/www/html
下创建两个目录用于存放数据,并写入相关的内容。配置好相关的selinux安全上下文
修改httpd服务的配置文件,添加监听8111和8222的端口号的参数
修改httpd服务
的配置文件,以支持虚拟主机功能。修改完后要重启httpd服务。
# 配置文件/etc/httpd/conf/httpd.conf
# 从113行开始写入以下内容
【ip:端口号】
DocumentRoot "/home/www/html/8111" 【网站数据目录】
ServerName "www.abong.com" 【网站服务器的域名】
【网站数据目录的信息】
AllowOverride None
Require all granted
DocumentRoot "/home/www/html/8222"
ServerName "bbs.abong.com"
AllowOverride None
Require all granted
在重启httpd服务的时候报错了,说是selinu安全子系统
的问题。估计又是selinux安全上下文的问题。semanage port -l | grep http
【查询与HTTP协议相关且SELinux服务允许的端口列表】semanage port -a -t http_port_t -p tcp 8111
【添加端口号8111到与HTTP协议相关且SELinux服务允许的端口列表】semanage port -a -t http_port_t -p tcp 8222
【添加端口号8222到与HTTP协议相关且SELinux服务允许的端口列表】firefox
,验证如下:ip地址
、主机域名
、端口号
来访问网站的全部内容了。感谢大家的关注!!!