Apache的介绍
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的Web服务器软件
大多数人都是通过访问网站而开始接触互联网的吧。我们平时访问的网站服务就是Web网络服务,一般是指允许用户通过浏览器访问互联网中各种资源的服务。如下图所示,Web网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的请求后才会响应,最终用于提供服务程序的Web服务器会通过HTTP(超文本传输协议)或HTTPS(安全超文本传输协议)把请求的内容传送给用户。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T7voiBgU-1647703934590)(C:Users郑波AppDataRoamingTyporatypora–user–images1641375234433.png)]
关于更多Apache的内容,访问官网:https://httpd.apache.org/
Apache的安装
下面逐一介绍
使用本地磁盘镜像做本地Yum源进行安装
前提:做此类实验时,需要关闭防火墙,Iptables,Selinux
[root@node3 ~]# systemctl stop firewalld #关闭防火墙
[root@node3 ~]# systemctl enable firewalld #设置开机自动关闭
[root@node3 ~]# iptables -F
[root@node3 ~]# iptables -X #请说出Iptables规则
[root@node3 ~]# iptables -Z
[root@node3 ~]# /usr/sbin/iptables-save
[root@node3 ~]# setenforce 0 #关闭Selinux
[root@node3 ~]# vi /etc/selinux/config
...
SELINUX=disabled #修改为此条件
...
[root@node3 ~]# rm -rf /etc/yum.repos.d/* #先删除系统自带的仓库
[root@node3 ~]# mkdir /media/cdrom
[root@node3 ~]# mount /dev/sr0 /media/cdrom/ #挂载系统镜像
mount: /dev/sr0 is write-protected, mounting read-only #提示
[root@node3 ~]# cd /etc/yum.repos.d/ #进入到仓库目录下
[root@node3 yum.repos.d]# vim local.repo
[local]
name=local
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
[root@node3 yum.repos.d]# yum repolist #查看配置的仓库信息
3、安装Apache
[root@node3 ~]# yum install -y httpd
...
Installed:
httpd.x86_64 0:2.4.6-80.el7.centos
Dependency Installed:
apr.x86_64 0:1.4.8-3.el7_4.1 apr-util.x86_64 0:1.5.2-6.el7 httpd-tools.x86_64 0:2.4.6-80.el7.centos mailcap.noarch 0:2.1.41-2.el7
Complete! #由以上信息,表示安装成功
[root@node3 ~]# httpd -v
Server version: Apache/2.4.6 (CentOS) #这个属于新版本
Server built: Apr 20 2018 18:10:38
[root@node3 ~]# systemctl restart httpd #开启Httpd服务
[root@node3 ~]# systemctl enable httpd #设置Httpd服务开机自启
在浏览器中输出本机器的IP,如本机IP:192.168.9.132
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X3PqZwnN-1647703934591)(C:Users郑波AppDataRoamingTyporatypora–user–images1641376115009.png)]
使用阿里云的Epel源进行安装
https://developer.aliyun.com/mirror/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OmM38hCC-1647703934592)(C:Users郑波AppDataRoamingTyporatypora–user–images1641376248139.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RbeMneL1-1647703934592)(C:Users郑波AppDataRoamingTyporatypora–user–images1641376293197.png)]
#没有wget命令的直接下载
[root@node3 ~]# yum install -y wget
[root@node3 ~]# yum install -y httpd #安装
配置服务文件参数
要想真正发挥Httpd的作用,上面的操作只是九牛一毛,我们需要通过配置它的配置文件,进而实现更高级的功能
查看httpd服务相关的配置文件,可以看到非常多,因此介绍几个常用的
[root@node3 ~]# rpm -ql httpd
...
作用 文件名称
/etc/httpd 服务目录
/etc/httpd/conf/httpd.conf 主配置文件
/var/www/html 网站数据目录
/var/log/httpd/access_log 访问日志
/var/log/httpd/error_log 错误日志
...
主配置文件中保存的是最重要的服务参数,一般会被保存到/etc目录中以软件名称命名的一个文件夹之中,名字为“服务名称.conf”,例如这里的“/etc/httpd/conf/httpd.conf”
[root@node3 ~]# vim /etc/httpd/conf/httpd.conf
#可以发现有三百多行,但是细看发现大部分都是注释
#我们可以过滤除“#”以外的内容
[root@node3 ~]# cat /etc/httpd/conf/httpd.conf | grep -v "#"
ServerRoot "/etc/httpd" #全局配置
Listen 80 #全局配置
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin root@localhost
<Directory /> #区域配置
AllowOverride none
Require all denied
</Directory> #区域配置
DocumentRoot "/var/www/html"
<Directory "/var/www">
AllowOverride None
Require all granted
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
<Files ".ht*">
Require all denied
</Files>
ErrorLog "logs/error_log"
LogLevel warn
<IfModule log_config_module>
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" combined
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule mime_module>
TypesConfig /etc/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>
AddDefaultCharset UTF-8
<IfModule mime_magic_module>
MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on
IncludeOptional conf.d/*.conf
-
顾名思义,全局配置参数就是一种全局性的配置参数,可作用于所有的子站点,既保证了子站点的正常访问,也有效降低了频繁写入重复参数的工作量。
-
就像在大学食堂里面打饭,食堂负责打饭的阿姨先给每位同学来一碗标准大小的米饭(全局配置),然后再根据每位同学的具体要求盛放他们想吃的菜(区域配置)。
ServerRoot | 服务目录 |
---|---|
ServerAdmin | 管理员邮箱 |
User | 运行服务的用户 |
Group | 运行服务的用户组 |
ServerName | 网站服务器的域名 |
DocumentRoot | 网站数据目录 |
Listen | 监听的IP地址与端口号 |
DirectoryIndex | 默认的索引页页面 |
ErrorLog | 错误日志文件 |
CustomLog | 访问日志文件 |
Timeout | 网页超时时间,默认为300秒 |
DocumentRoot 参数讲解
从上表可知 DocumentRoot参数用于定义网站数据的保存路径,其参数的默认值是/var/www/html(即把网站数据存放到这个目录中);而当前网站普遍的首页面名称是index.html,因此可以向/var/www/html/index.html文件中写入一段内容,替换掉httpd服务程序的默认首页面。该操作会立即生效。
[root@node3 ~]# echo "Welcome To zhengbo" > /var/www/html/index.html
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-msu3MazW-1647703934593)(C:Users郑波AppDataRoamingTyporatypora-user-images1641377516278.png)]
1、 在默认情况下,网站数据保存在/var/www/html目录中,如果想把保存网站数据的目录修改为/home/bo目录,该怎么操作呢?这时就需要修改主配置文件中的DocumentRoot参数了,如下操作:
[root@node3 ~]# mkdir /home/bo #先创建网页目录
[root@node3 ~]# vi /etc/httpd/conf/httpd.conf #编辑主配置文件
#将约第119行用于定义网站数据保存路径的参数DocumentRoot修改为/home/bo,同时还需要将约第124行用于定义目录权限的参数Directory后面的路径也修改为/home/bo。配置文件修改完毕后即可保存并退出。
...
119 DocumentRoot "/home/bo"
120
121 #
122 # Relax access to content within /var/www.
123 #
124 <Directory "/home/bo">
125 AllowOverride None
126 # Allow open access:
127 Require all granted
128 </Directory>
...
[root@node3 ~]# echo "This is kkk" >> /home/bo/index.html
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EqQtYYnc-1647703934594)(C:Users郑波AppDataRoamingTyporatypora-user-images1641378278450.png)]
个人用户功能
现在网上大部分记录的都是httpd2.4的版本,现在默认安装的是2.4.6版本,因此在配置中会有些不同(包括个人用户功能的配置)
简单说明配置“个人用户功能”的作用
Linux支持多用户同时工作,那如果想在系统中为 每位用户建立一个独立的网站,通常的方法是基于虚拟网站主机功能来部署多个网站。 但是当用户数量比较多时,这是个不小的工程, 而且在用户自行管理网站时,还会碰到各种权限限制,需要为此做很多额外的工作。 那这时httpd的服务程序提供的个人用户主页功能就可以完美的解决此类问题 而且访问起来也非常容易。 大大提高了工作效率
配置个人用户功能
[root@node3 conf.d]# httpd -v
Server version: Apache/2.4.6 (CentOS) #可以看到httpd的版本为2.4.6
Server built: Apr 20 2018 18:10:38
可以看到httpd的版本为2.4.6,因此在配置个人用户功能时比这2.4版本的有所不同
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.d/userdir.conf
1、首先来进入/etc/httpd/conf.modules.d/00-base.conf, 必须要有userdir_module
模块
[root@node3 conf.d]# vi /etc/httpd/conf.modules.d/00-base.conf
...
LoadModule userdir_module modules/mod_userdir.so
...
2、修改/etc/httpd/conf.d/userdir.conf配置文件,将第17行的 UserDir disabled 加上注释
并取消24行UserDir public
的注释(可以更改UserDir后面文件夹的名字,比如UserDir www
)
[root@node3 httpd]# vi /etc/httpd/conf.d/userdir.conf
11 <IfModule mod_userdir.c>
12 #
13 # UserDir is disabled by default since it can confirm the presence
14 # of a username on the system (depending on home directory
15 # permissions).
16 #
17 #UserDir disabled
18
19 #
20 # To enable requests to /~user/ to serve the user's public_html
21 # directory, remove the "UserDir disabled" line above, and uncomment
22 # the following line instead:
23 #
24 UserDir public_html
25 </IfModule>
3、重启服务
[root@node3 conf.d]# systemctl restart httpd
[root@node3 ~]# useradd tt
[root@node3 ~]# su - tt #登录tt用户
Last login: Wed Jan 5 05:48:13 EST 2022 on pts/1
[tt@node3 ~]$ pwd
/home/tt
[root@node3 ~]# mkdir public_html
[root@node3 ~]# echo "This is tt website" > public_html/index.html
[root@node3 ~]# chmod -R 755 /home/tt
[root@node3 ~]# exit
在浏览器的地址栏中输入网址,其格式为“网址/~用户名”(其中的波浪号是必需的,而且网址、波浪号、用户 名之间没有空格)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TiUYcZjf-1647703934595)(C:Users郑波AppDataRoamingTyporatypora-user-images1641380825357.png)]
通过身份验证实现个人用户功能
上面虽然实现了个人用户功能,但是会发现不太安全,毕竟也没啥密码验证啥的,因此有时 网站的拥有者并不希望直接将网页内容显示出来, 而只想让通过身份验证的用户看到里面的内容,这时就可以在网站中添加密码功能了。
1、 先使用htpasswd命令生成密码数据库。-c参数表示第一次生成;后面再分别添加密码数据库的存放文件,以 及验证要用到的用户名称(该用户不必是系统中已有的本地账户)。
[root@node3 httpd]# htpasswd -c /etc/httpd/passwd tt
New password:此处输入用于网页验证的密码 我输入:000
Re-type new password:再输入一遍进行确认
Adding password for user linuxprobe
这是我们可以查看/etc/httpd/passwd这个文件,里面存放的就是用户和编码后的密码
[root@node3 httpd]# vi passwd
tt:$apr1$Kg7Qv/Pj$NaCp8.njdCua4dJLw17.f0
2、继续编辑/etc/httpd/conf.d/userdir.conf文件
继续编辑个人用户主页功能的配置文件。把第31~44行的参数信息修改成下列内容,其中以井号(#)开头的内容为添加的注释信息,可将其忽略。随后保存并退出配置文件,重启httpd服务程序即可生效。
<Directory "/home/*/public_html">
32 #AllowOverride FileInfo AuthConfig Limit Indexes
33 #Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
34 #Require method GET POST OPTIONS
35 AllowOverride all
36 #刚刚生成出的密码验证文件保存路径
37 authuserfile "/etc/httpd/passwd"
38 #当用户访问网站时的提示信息
39 authname "My privately website"
40 #验证方式为口令模式
41 authtype basic
42 #访问网站时需要验证的用户名称
43 require user tt
44 </Directory>
注意: 验证时使用的账户和密码是用htpasswd命令生成的专门用于网站登录的账户和密码,而不是系统中的账户和密码,请不要搞错了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f03Ws2iP-1647703934595)(C:Users郑波AppDataRoamingTyporatypora-user-images1641381854104.png)]
验证成功之后的页面:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UWXXnu3E-1647703934596)(C:Users郑波AppDataRoamingTyporatypora-user-images1641381877264.png)]
虚拟网站主机功能
在上面的实验中我们实现了,最基本的httpd测试网页,也实现了基于多用户对应多网页的个人用户功能,但是上面的这些操作,实际上还是一个IP地址去接收用户的请求,换句话说用户发送请求都会只交给192.168.9.132这个IP地址,那么这样一来一个服务器就只能运行一个网站,从而造成硬件资源的浪费。那我们能不能同一台服务器上运行多个网站呢?能,这就是虚拟网站主机功能
在虚拟专用服务器(Virtual Private Server,VPS)与云计算技术诞生以前,IDC服务供应商为了能够更充分地利用服务器资源,同时也为了降低购买门槛,纷纷启用了虚拟主机功能。
利用虚拟主机功能,可以把一台处于运行状态的物理服务器分割成多个“虚拟的服务器”。但是,该技术无法实现目前云主机技术的硬件资源隔离,而只能让这些虚拟的服务器共同使用物理服务器的硬件资源,供应商只能限制硬盘的使用空间大小。出于各种考虑的因素(主要是价格低廉),目前依然有很多企业或个人站长在使用虚拟主机的形式来部署网站。
有网络基础的应该知道,请求不同的网站,可以有不同的方式,主要有三种:
那同样,既然Apache是实现网页响应和请求的,那它的虚拟网站主机功能也能基于以上三种方式进行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sorw81w1-1647703934597)(C:Users郑波AppDataRoamingTyporatypora-user-images1641383195389.png)]
基于用户请求的不同IP地址
如果一台服务器有多个IP地址,而且每个IP地址与服务器上部署的每个网站一一对应,这样当用户请求访问不同的IP地址时,会访问到不同网站的页面资源。而且,每个网站都有一个独立的IP地址,这对搜索引擎优化也大有裨益。
实验环境前提:虚拟机有三块网卡(两块也行,不能少于两块网卡)
[root@node3 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:d6:ee:76 brd ff:ff:ff:ff:ff:ff
inet 192.168.9.132/24 brd 192.168.9.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::24a2:37ab:1c57:5b4f/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:d6:ee:80 brd ff:ff:ff:ff:ff:ff
inet 192.168.9.134/24 brd 192.168.9.255 scope global noprefixroute dynamic ens37
valid_lft 1556sec preferred_lft 1556sec
inet6 fe80::3cc4:1335:7c51:10d/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: ens38: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:d6:ee:8a brd ff:ff:ff:ff:ff:ff
inet 192.168.9.133/24 brd 192.168.9.255 scope global noprefixroute dynamic ens38
valid_lft 1568sec preferred_lft 1568sec
inet6 fe80::c15c:8801:b369:3df2/64 scope link noprefixroute
valid_lft forever preferred_lft forever
######并且需要ping测试看啊可能网卡的连通性
[root@node3 ~]# ping -c 4 192.168.9.132
PING 192.168.9.132 (192.168.9.132) 56(84) bytes of data.
64 bytes from 192.168.9.132: icmp_seq=1 ttl=64 time=0.016 ms
64 bytes from 192.168.9.132: icmp_seq=2 ttl=64 time=0.034 ms
[root@node3 ~]# ping -c 4 192.168.9.133
PING 192.168.9.133 (192.168.9.133) 56(84) bytes of data.
64 bytes from 192.168.9.133: icmp_seq=1 ttl=64 time=0.013 ms
64 bytes from 192.168.9.133: icmp_seq=2 ttl=64 time=0.042 ms
[root@node3 ~]# ping -c 4 192.168.9.134
PING 192.168.9.134 (192.168.9.134) 56(84) bytes of data.
64 bytes from 192.168.9.134: icmp_seq=1 ttl=64 time=0.018 ms
64 bytes from 192.168.9.134: icmp_seq=2 ttl=64 time=0.041 ms
1、分别 在/home/bo中创建用于保存不同网站数据的3个目录,并向其中分别写入网站的首页文件。每个首页文 件中应有明确区分不同网站内容的信息,方便稍后能更直观地检查效果。
[root@node3 ~]# mkdir -p /home/bo/132
[root@node3 ~]# mkdir -p /home/bo/133
[root@node3 ~]# mkdir -p /home/bo/134
[root@node3 ~]# echo "IP:192.168.9.132" > /home/bo/132/index.html
[root@node3 ~]# echo "IP:192.168.9.133" > /home/bo/133/index.html
[root@node3 ~]# echo "IP:192.168.9.134" > /home/bo/134/index.html
2、修改配置文件:vi /etc/httpd/conf/httpd.conf
[root@node3 ~]# vi /etc/httpd/conf/httpd.conf #随便找空白处,添加如下内容:
...
<VirtualHost 192.168.9.132>
DocumentRoot /home/bo/132 #网页路径
ServerName www.bo.com #网站的域名,如果此服务器没有域名,那就不用写,有域名也可以选择不写
<Directory /home/bo/132> #对上面网页文件做授权,表示允许的动作
AllowOverride None
Require all granted #在httpd2.4.6版本中如果允许返回问此网页改成这样写的了
</Directory>
</VirtualHost>
<VirtualHost 192.168.9.133>
DocumentRoot /home/bo/133
ServerName www.bo.com
<Directory /home/bo/133>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.9.134>
DocumentRoot /home/bo/134
ServerName www.bo.com
<Directory /home/bo/134>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
...
3、重启服务
[root@node3 ~]# systemctl restart httpd
6、浏览器测试
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3OM7IO8A-1647703934597)(C:Users郑波AppDataRoamingTyporatypora-user-images1641383908669.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QX7tMXrU-1647703934598)(C:Users郑波AppDataRoamingTyporatypora-user-images1641383917350.png)]
基于用户请求的不同主机域名
当服务器无法为每个网站都分配一个独立IP地址的时候,可以尝试让Apache自动识别用户请求的域名,从而根据不同的域名请求来传输不同的内容。在这种情况下的配置更加简单,只需要保证位于生产环境中的服务器上有一个可用的IP地址(这里以192.168.9.132为例)就可以了。
1、做域名解析
[root@node3 ~]# vi /etc/hosts
192.168.9.132 node3 www.bo1.com www.bo2.com www.bo3.com
######测试其连通性
[root@node3 ~]# ping www.bo1.com
PING node3 (192.168.9.132) 56(84) bytes of data.
64 bytes from node3 (192.168.9.132): icmp_seq=1 ttl=64 time=0.013 ms
[root@node3 ~]# ping www.bo2.com
PING node3 (192.168.9.132) 56(84) bytes of data.
64 bytes from node3 (192.168.9.132): icmp_seq=1 ttl=64 time=0.011 ms
[root@node3 ~]# ping www.bo3.com
PING node3 (192.168.9.132) 56(84) bytes of data.
64 bytes from node3 (192.168.9.132): icmp_seq=1 ttl=64 time=0.011 ms
2、 分别在/home/wwwroot中创建用于保存不同网站数据的3个目录,并向其中分别写入网站的首页文件。每个首页文件中应有明确区分不同网站内容的信息,方便稍后能更直观地检查效果。
[root@node3 ~]# mkdir -p /home/bo/bo1
[root@node3 ~]# mkdir -p /home/bo/bo2
[root@node3 ~]# mkdir -p /home/bo/bo2
[root@node3 ~]# echo "www.bo1.com" > /home/bo/bo1/index.html
[root@node3 ~]# echo "www.bo2.com" > /home/bo/bo2/index.html
[root@node3 ~]# echo "www.bo3.com" > /home/bo/bo3/index.html
3、修改配置文件:vi /etc/httpd/conf/httpd.conf
[root@node3 ~]# vi /etc/httpd/conf/httpd.conf
...
<VirtualHost 192.168.9.132>
Documentroot /home/bo/bo1
ServerName www.bo1.com #相关参数含义参考上面的
<Directory /home/bo/bo1>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.9.132>
Documentroot /home/bo/bo2
ServerName www.bo2.com
<Directory /home/bo/bo2>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.9.132>
Documentroot /home/bo/bo3
ServerName www.bo3.com
<Directory /home/bo/bo3>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
...
4、重启服务
[root@node3 ~]# systemctl restart httpd
基于用户请求的不同端口号
基于端口号的虚拟主机功能可以让用户通过指定的端口号来访问服务器上的网站资源。
1、 分别在/home/bo中创建用于保存不同网站数据的3个目录,并向其中分别写入网站的首页文件。每个 首页文件中应有明确区分不同网站内容的信息,方便稍后能更直观地检查效果。
[root@node3 ~]# mkdir -p /home/bo/6111
[root@node3 ~]# mkdir -p /home/bo/6222
[root@node3 ~]# mkdir -p /home/bo/6333
[root@node3 ~]# echo "port:6111" > /home/bo/6111/index.html
[root@node3 ~]# echo "port:6222" > /home/bo/6222/index.html
[root@node3 ~]# echo "port:6333" > /home/bo/6333/index.html
2、修改配置文件:vi /etc/httpd/conf/httpd.conf
在httpd服务配置文件的第43行~45行分别添加用于监听6111、6222和6333端口的参数。
[root@node3 ~]# vi /etc/httpd/conf/httpd.conf
...
Listen 6111
Listen 6222
Listen 6333
...
3、修改配置文件:vi /etc/httpd/conf/httpd.conf
从httpd服务的配置文件中大约第134行处开始,分别追加写入3个基于端口号的虚拟主机网站参数,然后保存并退出。
[root@node3 ~]# vi /etc/httpd/conf/httpd.conf
...
<VirtualHost 192.168.9.132:6111> #标明端口
DocumentRoot /home/bo/6111 #网站页面文件
ServerName www.bo.com
<Directory /home/bo/6111> #对网站页面授权
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.9.132:6222>
DocumentRoot /home/bo/6222
ServerName www.bo.com
<Directory /home/bo/6222>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.9.132:6333>
DocumentRoot /home/bo/6333
ServerName www.bo.com
<Directory /home/bo/6333>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
...
4、重启服务
[root@node3 ~]# systemctl restart httpd
5、浏览器测试
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0fLQHUbz-1647703934598)(C:Users郑波AppDataRoamingTyporatypora-user-images1641393275589.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-834L8Lhs-1647703934599)(C:Users郑波AppDataRoamingTyporatypora-user-images1641393285992.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SqpfFzCA-1647703934599)(C:Users郑波AppDataRoamingTyporatypora-user-images1641393296026.png)]
Apache的访问控制
Apache可以基于源主机名、源IP地址或源主机上的浏览器特征等信息对网站上的资源进行访问控制。
在httpd2.4版本之前,所使用的指令是: Allow , Deny , Order ,比如: Order Allow, Deny”表示先将源主机与允许规则进行匹配,若匹配成功则允许访问请求,反之则拒绝访问请求。
但在2.4之后我们应该写成这样的形式:
#表示允许的动作:
Require host address
Require ip ip.address
#表示拒绝的动作:
<RequireAll> #注意在表示拒绝时,需要将规则放在<RequireAll>~</RequireAll>里面
Require not host host.example.com
Require not ip 10.252.46.165
</RequireAll>
#表示全部允许:
Require all granted
#表示全部拒绝:
Require all denied
1、创建网页文件
[root@node3 ~]# mkdir /var/www/html/bo/
[root@node3 ~]# echo "This is aabb" > /var/www/html/bo/index.html
2、编辑/etc/httpd/conf/httpd.conf 著配置文件
[root@node3 ~]# vi /etc/httpd/conf/httpd.conf
#找到空白处添加如下内容:
<Directory />
<RequireAll>
Require not ip 192.168.9.132
Require all granted #允许全部主机
</RequireAll>
</Directory>
3、重启服务
[root@node3 ~]# systemctl restart httpd
6、浏览器测试
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YrXAWqtM-1647703934607)(C:Users郑波AppDataRoamingTyporatypora-user-images1641433657999.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i4kSBydK-1647703934608)(C:Users郑波AppDataRoamingTyporatypora-user-images1641433670356.png)]
原文地址:https://blog.csdn.net/m0_57776598/article/details/123605600
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_30204.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!