Apache的虚拟主机功能是服务器基于用户请求的不同IP地址、主机域名或端口号,提供多个网站同时为外部提供访问服务的技术。
基于IP地址的虚拟主机
1)配置IP地址,确保IP正常访问。
[root@dsrw ~]# nmcli connection up ens160
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/15)
2)在/home/wwwt中创建用于保存不同网站数据的3个目录,并向其中分别写入网站的首页文件。
[root@dsrw ~]# mkdir -p /home/www/2
[root@dsrw ~]# mkdir -p /home/www/3
[root@dsrw ~]# mkdir -p /home/www/4
[root@dsrw ~]# echo "IP: 192.168.10.2" >/home/www/2/index.html
[root@dsrw ~]# echo "IP: 192.168.10.3" >/home/www/3/index.html
[root@dsrw ~]# echo "IP: 192.168.10.4" >/home/www/4/index.html
3)设置SELinux安全上下文,使用restorecon命令让立即生效
[root@dsrw ~]# semanage fcontext -a -t httpd_sys_content_t /home/www
ValueError: /home/www 的文件上下文已定义
[root@dsrw ~]# semanage fcontext -a -t httpd_sys_content_t /home/www/2
[root@dsrw ~]# semanage fcontext -a -t httpd_sys_content_t /home/www/2/*
[root@dsrw ~]# semanage fcontext -a -t httpd_sys_content_t /home/www/3
[root@dsrw ~]# semanage fcontext -a -t httpd_sys_content_t /home/www/3/*
[root@dsrw ~]# semanage fcontext -a -t httpd_sys_content_t /home/www/4
[root@dsrw ~]# semanage fcontext -a -t httpd_sys_content_t /home/www/4/*
[root@dsrw ~]# restorecon -Rv /home/www
4)修改配置文件,并重新启动服务
vim /etc/httpd/conf/httpd.conf
122 DocumentRoot "/home/www"
127 <Directory "/home/www">
128 AllowOverride None
129 # Allow open access:
130 Require all granted
131 </Directory>
133 <VirtualHost 192.168.10.2>
134 DocumentRoot /home/www/2
135 ServerName www.dsrw.com
136 <Directory /home/www/2>
137 AllowOverride None
138 Require all granted
139 </Directory>
140 </VirtualHost>
142 <VirtualHost 192.168.10.3>
143 DocumentRoot /home/www/3
144 ServerName www.dsrw.com
145 <Directory /home/www/3>
146 AllowOverride None
147 Require all granted
148 </Directory>
149 </VirtualHost>
151 <VirtualHost 192.168.10.4>
152 DocumentRoot /home/www/4
153 ServerName www.dsrw.com
154 <Directory /home/www/4>
155 AllowOverride None
156 Require all granted
157 </Directory>
158 </VirtualHost>
5)测试基于不同的IP地址访问虚拟主机网站
2.基于主机域名的虚拟主机
1)设置IP地址与域名之间对应关系的配置文件,保存并退出后会立即生效。
[root@dsrw ~]# vim /etc/hosts
192.168.10.2 www.dsrw.com www.dsrw.cn www.dsrw.com.cn
[root@dsrw ~]# ping www.dsrw.com
PING www.dsrw.com (192.168.10.2) 56(84) bytes of data.
64 bytes from www.dsrw.com (192.168.10.2): icmp_seq=1 ttl=64 time=0.046 ms
[root@dsrw ~]# ping www.dsrw.cn
PING www.dsrw.com (192.168.10.2) 56(84) bytes of data.
64 bytes from www.dsrw.com (192.168.10.2): icmp_seq=1 ttl=64 time=0.088 ms
root@dsrw ~]# ping www.dsrw.com.cn
PING www.dsrw.com (192.168.10.2) 56(84) bytes of data.
64 bytes from www.dsrw.com (192.168.10.2): icmp_seq=1 ttl=64 time=0.051 ms
2)创建网站对应目录,设置主页
[root@dsrw ~]# mkdir /home/www/dsrwcom
[root@dsrw ~]# mkdir /home/www/dsrwcn
[root@dsrw ~]# mkdir /home/www/dsrwcomcn
[root@dsrw ~]# echo "192.168.10.2 www.dsrw.com" >/home/www/dsrwcom/index.html
[root@dsrw ~]# echo "192.168.10.2 www.dsrw.cn" >/home/www/dsrwcn/index.html
[root@dsrw ~]# echo "192.168.10.2 www.dsrw.com.cn" >/home/www/dsrwcomcn/index.html
3)设置SELinux安全上下文,使用restorecon命令让立即生效
[root@dsrw www]# semanage fcontext -a -t httpd_sys_content_t /home/www
[root@dsrw www]# semanage fcontext -a -t httpd_sys_content_t /home/www/dsrwcom
[root@dsrw www]# semanage fcontext -a -t httpd_sys_content_t /home/www/dsrwcom/*
[root@dsrw www]# semanage fcontext -a -t httpd_sys_content_t /home/www/dsrwcn
[root@dsrw www]# semanage fcontext -a -t httpd_sys_content_t /home/www/dsrwcn/*
[root@dsrw www]# semanage fcontext -a -t httpd_sys_content_t /home/www/dsrwcomcn
[root@dsrw www]# semanage fcontext -a -t httpd_sys_content_t /home/www/dsrwcomcn/*
[root@dsrw www]# restorecon -Rv /home/www
4)配置httpd服务的配置文件,重启httpd服务。
[root@dsrw ~]# vim /etc/httpd/conf/httpd.conf
133 <VirtualHost 192.168.10.2>
134 DocumentRoot /home/www/dsrwcom
135 ServerName www.dsrw.com
136 <Directory /home/www/dsrwcom>
137 AllowOverride None
138 Require all granted
139 </Directory>
140 </VirtualHost>
142 <VirtualHost 192.168.10.2>
143 DocumentRoot /home/www/dsrwcn
144 ServerName www.dsrw.cn
145 <Directory /home/www/dsrwcn>
146 AllowOverride None
147 Require all granted
148 </Directory>
149 </VirtualHost>
152 <VirtualHost 192.168.10.2>
153 DocumentRoot /home/www/dsrwcomcn
154 ServerName www.dsrw.com.cn
155 <Directory /home/www/dsrwcomcn>
156 AllowOverride None
157 Require all granted
158 </Directory>
159 </VirtualHost>
[root@dsrw www]# systemctl restart httpd
5)测试基于不同域名访问虚拟主机网站
[root@dsrw www]# firefox
3.基于端口号的虚拟主机
1)在/home/wwwt中创建用于保存不同网站数据的3个目录,并写入网站的首页文件。
[root@dsrw www]# mkdir -p /home/www/8102
[root@dsrw www]# mkdir -p /home/www/8103
[root@dsrw www]# mkdir -p /home/www/8104
[root@dsrw www]# echo "port: 8102" > /home/www/8102/index.html
[root@dsrw www]# echo "port: 8103" > /home/www/8103/index.html
[root@dsrw www]# echo "port: 8104" > /home/www/8104/index.html
2)在httpd服务配置文件添加用于监听8102、8103、8104端口
[root@dsrw www]# vim /etc/httpd/conf/httpd.conf
46 Listen 8102
47 Listen 8103
48 Listen 8104
136 <VirtualHost 192.168.10.2:8102>
137 DocumentRoot /home/www/8102
138 ServerName www.dsrw.com
139 <Directory /home/www/8102>
140 AllowOverride None
141 Require all granted
142 </Directory>
143 </VirtualHost>
144
145 <VirtualHost 192.168.10.2:8103>
146 DocumentRoot /home/www/8103
147 ServerName www.dsrw.cn
148 <Directory /home/www/8103>
149 AllowOverride None
150 Require all granted
151 </Directory>
152 </VirtualHost>
153
154 <VirtualHost 192.168.10.2:8104>
155 DocumentRoot /home/www/8104
156 ServerName www.dsrw.com.cn
157 <Directory /home/www/8104>
158 AllowOverride None
159 Require all granted
160 </Directory>
161 </VirtualHost>
[root@dsrw www]# systemctl restart httpd
4)设置SELinux安全上下文,使用restorecon命令让立即生效
[root@dsrw www]# semanage fcontext -a -t httpd_sys_content_t /home/www
ValueError: /home/www 的文件上下文已定义
[root@dsrw www]# semanage fcontext -a -t httpd_sys_content_t /home/www/8102
[root@dsrw www]# semanage fcontext -a -t httpd_sys_content_t /home/www/8102/*
[root@dsrw www]# semanage fcontext -a -t httpd_sys_content_t /home/www/8103
[root@dsrw www]# semanage fcontext -a -t httpd_sys_content_t /home/www/8103/*
[root@dsrw www]# semanage fcontext -a -t httpd_sys_content_t /home/www/8104
[root@dsrw www]# semanage fcontext -a -t httpd_sys_content_t /home/www/8104/*
[root@dsrw www]# restorecon -Rv /home/www
5)将这3个端口号添加到HTTP协议相关且SELinux服务允许的端口列表。
[root@dsrw www]#semanage port -a -t http_port_t -p tcp 8102
[root@dsrw www]#semanage port -a -t http_port_t -p tcp 8103
[root@dsrw www]#semanage port -a -t http_port_t -p tcp 8104
6)命令查询并过滤出所有与HTTP协议相关且SELinux服务允许的端口列表。
[root@dsrw www]# semanage port -l| grep http
http_cache_port_t tcp 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 8104, 8103, 8102, 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
pegasus_https_port_t tcp 5989
7)重启httpd服务,打开浏览器测试
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
请登录后查看评论内容